Spec-Zone.ru › Ruby on Rails 8.1

class ActionDispatch::DebugLocks

Родитель:
Object

Action Dispatch DebugLocks

Это промежуточное ПО можно использовать для диагностики взаимоблокировок в блокировке автозагрузки.

Чтобы использовать его, добавьте его в начало стека промежуточного ПО с помощью config/application.rb:

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

После перезапуска приложения и повторного возникновения взаимоблокировки маршрут /rails/locks покажет сводку по всем потокам, известным блокировке, с указанием уровня блокировки, который они удерживают или ожидают, а также текущей трассировки стека.

Обычно взаимоблокировка возникает из-за конфликта блокировки с другой внешней блокировкой или блокирующим вызовом ввода-вывода. Такие причины нельзя определить автоматически, но они должны быть видны в отображаемых трассировках стека.

ПРИМЕЧАНИЕ. Форматирование и содержимое вывода этого промежуточного ПО предназначены для просмотра человеком и могут меняться в разных версиях.

Это промежуточное ПО предоставляет сведения о работе сервера без контроля доступа. Его следует включать только при необходимости, а затем отключать.

Открытые методы класса

new (app, path = "/rails/locks") Показать исходный код
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 30
def initialize(app, path = "/rails/locks")
  @app = app
  @path = path
end

Открытые методы экземпляра

call (env) Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API