класс ActionDispatch::DebugLocks
Этот миддлварь можно использовать для диагностики тупиков в механизме автозагрузки.
Для его использования, вставьте его в верхнюю часть стека миддлваря, используя config/application.rb:
config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks
После перезапуска приложения и повторного срабатывания условия тупика, /rails/locks покажет сводку всех потоков, которые в данный момент известны механизму блокировки, уровень блокировки, который они удерживают или ожидают, и их текущий стек вызовов.
В целом, тупик будет вызван конфликтом между механизмом блокировки и какой-либо другой внешней блокировкой или вызовом блокирующего ввода-вывода. Эти конфликты невозможно автоматически идентифицировать, но они должны быть видны в отображаемых стеках вызовов.
ПРИМЕЧАНИЕ: Форматирование и содержание вывода этого миддлваря предназначены для восприятия человеком и могут изменяться между выпусками.
Этот миддлварь предоставляет операционные данные сервера без контроля доступа. Он должен быть включён только в процессе использования и удалён после него.
Публичные методы класса
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 24 def initialize(app, path = "/rails/locks") @app = app @path = path end
Публичные методы экземпляра
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 29
def call(env)
req = ActionDispatch::Request.new env
if req.get?
path = req.path_info.chomp("/".freeze)
if path == @path
return render_details(req)
end
end
@app.call(env)
end
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.