класс ActionDispatch::RequestId
Action Dispatch RequestId
Предоставляет уникальный идентификатор запроса в переменной окружения action_dispatch.request_id (к которой затем можно обратиться через ActionDispatch::Request#request_id или её псевдоним ActionDispatch::Request#uuid) и отправляет тот же идентификатор клиенту в заголовке X-Request-Id.
Уникальный идентификатор запроса либо формируется на основе заголовка X-Request-Id в запросе, который обычно добавляется межсетевым экраном, балансировщиком нагрузки или веб-сервером, либо, если этот заголовок недоступен, представляет собой случайный UUID. Если заголовок принимается извне, мы очищаем его, ограничивая длину 255 символами и оставляя только буквенно-цифровые символы и дефисы.
Уникальный идентификатор запроса можно использовать для отслеживания запроса от начала до конца; обычно он попадает в файлы журналов различных компонентов стека.
Общедоступные методы класса
# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 25
def initialize(app, header:)
@app = app
@header = header
@env_header = "HTTP_#{header.upcase.tr("-", "_")}"
end Общедоступные методы экземпляра
# File actionpack/lib/action_dispatch/middleware/request_id.rb, line 31
def call(env)
req = ActionDispatch::Request.new env
req.request_id = make_request_id(req.get_header(@env_header))
@app.call(env).tap { |_status, headers, _body| headers[@header] = req.request_id }
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.