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