class GrapeApeRails::Handlers::RailsLogging
Public Class Methods
new(app)
click to toggle source
# File lib/grape_ape_rails/handlers/rails_logging.rb, line 4 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/grape_ape_rails/handlers/rails_logging.rb, line 8 def call(env) api_version = env['rack.routing_args'][:route_info].route_version rescue nil payload = { remote_addr: env['REMOTE_ADDR'], request_method: env['REQUEST_METHOD'], request_path: env['PATH_INFO'], request_query: env['QUERY_STRING'], api_version: api_version } req = Rack::Request.new(env) payload[:params] = req.params ActiveSupport::Notifications.instrument "grape.request", payload do @app.call(env).tap do |response| status, headers, body = *response payload[:params].merge!(env["api.endpoint"].params.to_hash) payload[:params].delete("route_info") payload[:params].delete("format") payload[:response_status] = status end end rescue @app.call(env) end