class RfLogger::RequestMiddleware
Constants
- REQUEST_ID_ENV
Public Class Methods
new(app, options={})
click to toggle source
@param [Hash] options @option opts [Hash{:label => [“header_name”, /or regex/]}] :tagged match on rack request env keys. First value found has priority.
# File lib/rf_logger/request/request_middleware.rb, line 13 def initialize(app, options={}) @app = app @tagged = options.fetch(:tagged, { request_id: REQUEST_ID_ENV }) end
Public Instance Methods
call(env)
click to toggle source
# File lib/rf_logger/request/request_middleware.rb, line 18 def call(env) @env = env set_tagged_thread_var @app.call(@env) end
tagged()
click to toggle source
# File lib/rf_logger/request/request_middleware.rb, line 24 def tagged @tagged.each_with_object({}) do |(label, matches), tags| [*matches].each do |match| break if (val = find_by(match)) && (tags[label] = val) end end end
Private Instance Methods
find_by(match)
click to toggle source
# File lib/rf_logger/request/request_middleware.rb, line 34 def find_by(match) case match when String @env[match] when Regexp (@env.find { |k, _| match =~ k }|| []).last else raise "Unknown tagged match type: #{match}" end end
set_tagged_thread_var()
click to toggle source
# File lib/rf_logger/request/request_middleware.rb, line 45 def set_tagged_thread_var Thread.current.set_inheritable_attribute(:rf_logger_request_tags, tagged) end