跳到內容 跳到搜尋

Action Dispatch DebugLocks

此中間件可用於診斷自動載入互鎖中的死結。

若要使用它,請使用 config/application.rb 將它插入中間件堆疊的頂端。

config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks

在重新啟動應用程式和重新觸發死結條件後,路由 /rails/locks 將顯示互鎖目前已知的所有執行緒摘要,它們正在持有或等待的鎖定層級,以及它們目前的後端追蹤。

通常死結是由互鎖與其他外部鎖定或阻擋 I/O 呼叫衝突所造成的。這些無法自動識別,但應在顯示的後端追蹤中可見。

注意:此中間件輸出的格式和內容供人類使用,並且預期會在各版本間變更。

此中間件公開伺服器的操作詳細資料,且沒有存取控制。它只應在使用時啟用,並在之後移除。

方法
C
N

類別公開方法

new(app, path = "/rails/locks")

# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 28
def initialize(app, path = "/rails/locks")
  @app = app
  @path = path
end

執行個體公開方法

call(env)

# 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