class Redmine::Reporting::Rails::Middleware
Rack middleware for Rails
applications. Any errors raised by the upstream application will be send to Redmine
and re-raised.
Public Class Methods
new(app)
click to toggle source
# File lib/redmine/reporting/rails/middleware.rb, line 7 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/redmine/reporting/rails/middleware.rb, line 11 def call(env) begin response = @app.call(env) rescue Exception => exception env['redmine_reporting.reference_id'] = redmine_report(env, exception) raise exception end if framework_exception = env['action_dispatch.exception'] env['redmine_reporting.reference_id'] = redmine_report(env, framework_exception) end response end
Private Instance Methods
redmine_report(env, exception)
click to toggle source
# File lib/redmine/reporting/rails/middleware.rb, line 28 def redmine_report(env, exception) return unless desc = env["action_controller.instance"].try(:redmine_reporting_request_data) Redmine::Reporting.report(exception) do notes do section("URL: #{desc[:url]} (#{desc[:params][:controller]}##{desc[:params][:action]})", '') section('Parameters') do output(desc[:params].select{|k,v| ![:controller, :action].include?(k)}.collect{|k,v| "* *#{k}:* #{v}"}.join("\n")) end section('Session') do output(desc[:session].collect{|k,v| "* *#{k}:* #{v}"}.join("\n")) end end end end
request_data(env)
click to toggle source
# File lib/redmine/reporting/rails/middleware.rb, line 44 def request_data(env) env["action_controller.instance"].try(:redmine_reporting_request_data) || {:rack_env => env} end