lib/bugsnag/rack.rb in bugsnag-1.0.0 vs lib/bugsnag/rack.rb in bugsnag-1.0.1

- old
+ new

@@ -6,17 +6,45 @@ def call(env) begin response = @app.call(env) rescue Exception => raised - Bugsnag.notify(raised) + error_id = Bugsnag.notify(raised, bugsnag_request_data(env)) raise end - if env["rack.exception"] - Bugsnag.notify(env["rack.exception"]) + if env['rack.exception'] + error_id = Bugsnag.notify(env['rack.exception'], bugsnag_request_data(env)) end response end + + private + def bugsnag_request_data(env) + request = ::Rack::Request.new(env) + + session = env['rack.session'] || {} + params = env['action_dispatch.request.parameters'] || request.params || {} + + { + :userId => session[:session_id] || session["session_id"], + :context => Bugsnag::Helpers.param_context(params), + :metaData => { + :request => { + :url => request.url, + :controller => params[:controller], + :action => params[:action], + :params => bugsnag_filter_if_filtering(env, Bugsnag::Helpers.cleanup_hash(params.to_hash)), + }, + :session => bugsnag_filter_if_filtering(env, Bugsnag::Helpers.cleanup_hash(session)), + :environment => bugsnag_filter_if_filtering(env, Bugsnag::Helpers.cleanup_hash(env)) + } + } + end + + def bugsnag_filter_if_filtering(env, hash) + @params_filters ||= env["action_dispatch.parameter_filter"] + Bugsnag::Helpers.apply_filters(hash, @params_filters) + end end -end \ No newline at end of file +end