Action Dispatch DebugLocks
此中間件可用於診斷自動載入互鎖中的死結。
若要使用它,請使用 config/application.rb
將它插入中間件堆疊的頂端。
config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks
在重新啟動應用程式和重新觸發死結條件後,路由 /rails/locks
將顯示互鎖目前已知的所有執行緒摘要,它們正在持有或等待的鎖定層級,以及它們目前的後端追蹤。
通常死結是由互鎖與其他外部鎖定或阻擋 I/O 呼叫衝突所造成的。這些無法自動識別,但應在顯示的後端追蹤中可見。
注意:此中間件輸出的格式和內容供人類使用,並且預期會在各版本間變更。
此中間件公開伺服器的操作詳細資料,且沒有存取控制。它只應在使用時啟用,並在之後移除。
方法
類別公開方法
new(app, path = "/rails/locks") 連結
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 28 def initialize(app, path = "/rails/locks") @app = app @path = path end
執行個體公開方法
call(env) 連結
來源:顯示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 33 def call(env) req = ActionDispatch::Request.new env if req.get? path = req.path_info.chomp("/") if path == @path return render_details(req) end end @app.call(env) end