class ActionDispatch::DebugLocks
Action Dispatch DebugLocks
Это промежуточное ПО можно использовать для диагностики взаимоблокировок в блокировке автозагрузки.
Чтобы использовать его, добавьте его в начало стека промежуточного ПО с помощью config/application.rb:
config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks
После перезапуска приложения и повторного возникновения взаимоблокировки маршрут /rails/locks покажет сводку по всем потокам, известным блокировке, с указанием уровня блокировки, который они удерживают или ожидают, а также текущей трассировки стека.
Обычно взаимоблокировка возникает из-за конфликта блокировки с другой внешней блокировкой или блокирующим вызовом ввода-вывода. Такие причины нельзя определить автоматически, но они должны быть видны в отображаемых трассировках стека.
ПРИМЕЧАНИЕ. Форматирование и содержимое вывода этого промежуточного ПО предназначены для просмотра человеком и могут меняться в разных версиях.
Это промежуточное ПО предоставляет сведения о работе сервера без контроля доступа. Его следует включать только при необходимости, а затем отключать.
Открытые методы класса
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 30 def initialize(app, path = "/rails/locks") @app = app @path = path end
Открытые методы экземпляра
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 35
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
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.