Rate Exceeded Event Payload

json
{ "event": "rate_exceeded", "message": "[Testy McTestFace/production] ActiveRecord::NoDatabaseError has occurred time(s) in the past ", "project": { "id": 123321, "name": "Testy McTestFace", "created_at": "2017-08-30T12:54:33.156695Z", "disable_public_links": false, "pivotal_project_id": null, "asana_workspace_id": null, "token": "zzz111", "github_project": "spacely/testy-mctestface", "environments": [ { "id": 68210, "project_id": 123321, "name": "production", "notifications": true, "created_at": "2017-09-05T06:10:19.057794Z", "updated_at": "2017-09-05T06:10:19.057794Z" }, { "id": 68074, "project_id": 123321, "name": "development", "notifications": true, "created_at": "2017-08-30T12:55:29.297392Z", "updated_at": "2017-08-30T12:55:29.297392Z" } ], "owner": { "id": 1, "email": "ben@example.com", "name": "Spacely Sprockets" }, "last_notice_at": "2023-10-30T19:29:08.000000Z", "earliest_notice_at": "2023-05-03T19:37:25.519130Z", "unresolved_fault_count": 102, "fault_count": 925, "active": true, "users": [ { "id": 1, "email": "ben@example.com", "name": "Ben" }, { "id": 99, "email": "george@example.com", "name": "George Jetson" } ], "sites": [ { "id": "c42c4c0a-6e3d-4303-9769-549ed2a5818e", "active": true, "last_checked_at": "2023-10-30T19:34:08.150725Z", "name": "Heroku", "state": "up", "url": "https://example.com" } ], "team_id": 1 }, "fault": { "project_id": 123321, "klass": "ActiveRecord::NoDatabaseError", "component": "pages", "action": "home", "environment": "production", "resolved": false, "ignored": false, "created_at": "2023-10-13T18:07:55.692256Z", "comments_count": 0, "message": "We could not find your database: d6ipl26lboesdi. Which can be found in the database configuration file located at config/database.yml.\n\nTo resolve this issue:\n\n- Did you create the database for this app, or delete it? You may need to create your database.\n- Has the database name changed? Check your database.yml config has the correct database name.\n\nTo create your database, run:\n\n bin/rails db:create", "notices_count": 6, "last_notice_at": "2023-10-13T18:08:10.000000Z", "tags": [], "id": 101337516, "assignee": null, "url": "https://app.honeybadger.io/projects/123321/faults/101337516", "deploy": { "environment": "production", "revision": "0eaf61a9ec756be9f4bb511ad71b37baaa9b73ba", "repository": "https://github.com/spacely/testy-mctestface", "local_username": "ben@example.com", "created_at": "2023-10-06T20:52:51.878336Z", "changelog": [], "url": "https://github.com/spacely/testy-mctestface/compare/d4f90c876adf4a108ebb9a6f47b5562b59578d97...0eaf61a9ec756be9f4bb511ad71b37baaa9b73ba" } }, "notice": { "id": 1013375161697220500, "environment": {}, "created_at": "2023-10-13T18:08:10.141219Z", "message": null, "token": "babe1d9d-67e3-4438-8c57-c544cea24ffb", "fault_id": 101337516, "request": { "url": "https://example.com/", "component": "pages", "action": "home", "params": { "controller": "pages", "action": "home" }, "session": {}, "context": {} }, "backtrace": [ { "number": "81", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/postgresql_adapter.rb", "method": "rescue in new_client", "source": { "79": " rescue ::PG::Error => error\n", "80": " if conn_params && conn_params[:dbname] && error.message.include?(conn_params[:dbname])\n", "81": " raise ActiveRecord::NoDatabaseError.db_error(conn_params[:dbname])\n", "82": " elsif conn_params && conn_params[:user] && error.message.include?(conn_params[:user])\n", "83": " raise ActiveRecord::DatabaseConnectionError.username_error(conn_params[:user])\n" }, "context": "all" }, { "number": "77", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/postgresql_adapter.rb", "method": "new_client", "source": { "75": "\n", "76": " class << self\n", "77": " def new_client(conn_params)\n", "78": " PG.connect(**conn_params)\n", "79": " rescue ::PG::Error => error\n" }, "context": "all" }, { "number": "37", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/postgresql_adapter.rb", "method": "postgresql_connection", "source": { "35": "\n", "36": " ConnectionAdapters::PostgreSQLAdapter.new(\n", "37": " ConnectionAdapters::PostgreSQLAdapter.new_client(conn_params),\n", "38": " logger,\n", "39": " conn_params,\n" }, "context": "all" }, { "number": "656", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "public_send", "source": { "654": "\n", "655": " def new_connection\n", "656": " Base.public_send(db_config.adapter_method, db_config.configuration_hash).tap do |conn|\n", "657": " conn.check_version\n", "658": " end\n" }, "context": "all" }, { "number": "656", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "new_connection", "source": { "654": "\n", "655": " def new_connection\n", "656": " Base.public_send(db_config.adapter_method, db_config.configuration_hash).tap do |conn|\n", "657": " conn.check_version\n", "658": " end\n" }, "context": "all" }, { "number": "700", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "checkout_new_connection", "source": { "698": " def checkout_new_connection\n", "699": " raise ConnectionNotEstablished unless @automatic_reconnect\n", "700": " new_connection\n", "701": " end\n", "702": "\n" }, "context": "all" }, { "number": "679", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "try_to_checkout_new_connection", "source": { "677": " # if successfully incremented @now_connecting establish new connection\n", "678": " # outside of synchronized section\n", "679": " conn = checkout_new_connection\n", "680": " ensure\n", "681": " synchronize do\n" }, "context": "all" }, { "number": "640", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "acquire_connection", "source": { "638": " # and +try_to_checkout_new_connection+ we can piggyback on +synchronize+ sections\n", "639": " # of the said methods and avoid an additional +synchronize+ overhead.\n", "640": " if conn = @available.poll || try_to_checkout_new_connection\n", "641": " conn\n", "642": " else\n" }, "context": "all" }, { "number": "341", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "checkout", "source": { "339": " # - ActiveRecord::ConnectionTimeoutError no connection can be obtained from the pool.\n", "340": " def checkout(checkout_timeout = @checkout_timeout)\n", "341": " checkout_and_verify(acquire_connection(checkout_timeout))\n", "342": " end\n", "343": "\n" }, "context": "all" }, { "number": "181", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_pool.rb", "method": "connection", "source": { "179": " # held in a cache keyed by a thread.\n", "180": " def connection\n", "181": " @thread_cached_conns[connection_cache_key(current_thread)] ||= checkout\n", "182": " end\n", "183": "\n" }, "context": "all" }, { "number": "211", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_adapters/abstract/connection_handler.rb", "method": "retrieve_connection", "source": { "209": " end\n", "210": "\n", "211": " pool.connection\n", "212": " end\n", "213": "\n" }, "context": "all" }, { "number": "313", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_handling.rb", "method": "retrieve_connection", "source": { "311": "\n", "312": " def retrieve_connection\n", "313": " connection_handler.retrieve_connection(connection_specification_name, role: current_role, shard: current_shard)\n", "314": " end\n", "315": "\n" }, "context": "all" }, { "number": "280", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/connection_handling.rb", "method": "connection", "source": { "278": " # to any of the specific Active Records.\n", "279": " def connection\n", "280": " retrieve_connection\n", "281": " end\n", "282": "\n" }, "context": "all" }, { "number": "433", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/core.rb", "method": "cached_find_by_statement", "source": { "431": "\n", "432": " def cached_find_by_statement(key, &block) # :nodoc:\n", "433": " cache = @find_by_statement_cache[connection.prepared_statements]\n", "434": " cache.compute_if_absent(key) { StatementCache.create(connection, &block) }\n", "435": " end\n" }, "context": "all" }, { "number": "317", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/core.rb", "method": "find_by", "source": { "315": "\n", "316": " keys = hash.keys\n", "317": " statement = cached_find_by_statement(keys) { |params|\n", "318": " wheres = keys.index_with { params.bind }\n", "319": " where(wheres).limit(1)\n" }, "context": "all" }, { "number": "69", "file": "[PROJECT_ROOT]/app/controllers/application_controller.rb", "method": "check_redirect", "source": { "67": "\n", "68": " def check_redirect\n", "69": " return unless (redirect = Redirect.find_by(slug: request.path.sub(%r{^/}, \"\")))\n", "70": " redirect_to redirect.url\n", "71": " end\n" }, "application_file": "app/controllers/application_controller.rb", "context": "app" }, { "number": "400", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "block in make_lambda", "source": { "398": " def make_lambda\n", "399": " lambda do |target, value, &block|\n", "400": " target.send(@method_name, &block)\n", "401": " end\n", "402": " end\n" }, "context": "all" }, { "number": "180", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "block (2 levels) in halting_and_conditional", "source": { "178": "\n", "179": " if !halted && user_conditions.all? { |c| c.call(target, value) }\n", "180": " result_lambda = -> { user_callback.call target, value }\n", "181": " env.halted = halted_lambda.call(target, result_lambda)\n", "182": " if env.halted\n" }, "context": "all" }, { "number": "34", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/abstract_controller/callbacks.rb", "method": "block (2 levels) in <module:Callbacks>", "source": { "32": " included do\n", "33": " define_callbacks :process_action,\n", "34": " terminator: ->(controller, result_lambda) { result_lambda.call; controller.performed? },\n", "35": " skip_after_callbacks_if_terminated: true\n", "36": " end\n" }, "context": "all" }, { "number": "181", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "block in halting_and_conditional", "source": { "179": " if !halted && user_conditions.all? { |c| c.call(target, value) }\n", "180": " result_lambda = -> { user_callback.call target, value }\n", "181": " env.halted = halted_lambda.call(target, result_lambda)\n", "182": " if env.halted\n", "183": " target.send :halted_callback_hook, filter, name\n" }, "context": "all" }, { "number": "595", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "block in invoke_before", "source": { "593": "\n", "594": " def invoke_before(arg)\n", "595": " @before.each { |b| b.call(arg) }\n", "596": " end\n", "597": "\n" }, "context": "all" }, { "number": "595", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "each", "source": { "593": "\n", "594": " def invoke_before(arg)\n", "595": " @before.each { |b| b.call(arg) }\n", "596": " end\n", "597": "\n" }, "context": "all" }, { "number": "595", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "invoke_before", "source": { "593": "\n", "594": " def invoke_before(arg)\n", "595": " @before.each { |b| b.call(arg) }\n", "596": " end\n", "597": "\n" }, "context": "all" }, { "number": "106", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "run_callbacks", "source": { "104": " # Common case: no 'around' callbacks defined\n", "105": " if next_sequence.final?\n", "106": " next_sequence.invoke_before(env)\n", "107": " env.value = !env.halted && (!block_given? || yield)\n", "108": " next_sequence.invoke_after(env)\n" }, "context": "all" }, { "number": "233", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/abstract_controller/callbacks.rb", "method": "process_action", "source": { "231": " # <tt>process_action</tt> callbacks around the normal behavior.\n", "232": " def process_action(...)\n", "233": " run_callbacks(:process_action) do\n", "234": " super\n", "235": " end\n" }, "context": "all" }, { "number": "23", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal/rescue.rb", "method": "process_action", "source": { "21": " private\n", "22": " def process_action(*)\n", "23": " super\n", "24": " rescue Exception => exception\n", "25": " request.env[\"action_dispatch.show_detailed_exceptions\"] ||= show_detailed_exceptions?\n" }, "context": "all" }, { "number": "67", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal/instrumentation.rb", "method": "block in process_action", "source": { "65": "\n", "66": " ActiveSupport::Notifications.instrument(\"process_action.action_controller\", raw_payload) do |payload|\n", "67": " result = super\n", "68": " payload[:response] = response\n", "69": " payload[:status] = response.status\n" }, "context": "all" }, { "number": "206", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/notifications.rb", "method": "block in instrument", "source": { "204": " def instrument(name, payload = {})\n", "205": " if notifier.listening?(name)\n", "206": " instrumenter.instrument(name, payload) { yield payload if block_given? }\n", "207": " else\n", "208": " yield payload if block_given?\n" }, "context": "all" }, { "number": "24", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/notifications/instrumenter.rb", "method": "instrument", "source": { "22": " listeners_state = start name, payload\n", "23": " begin\n", "24": " yield payload if block_given?\n", "25": " rescue Exception => e\n", "26": " payload[:exception] = [e.class.name, e.message]\n" }, "context": "all" }, { "number": "206", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/notifications.rb", "method": "instrument", "source": { "204": " def instrument(name, payload = {})\n", "205": " if notifier.listening?(name)\n", "206": " instrumenter.instrument(name, payload) { yield payload if block_given? }\n", "207": " else\n", "208": " yield payload if block_given?\n" }, "context": "all" }, { "number": "66", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal/instrumentation.rb", "method": "process_action", "source": { "64": " ActiveSupport::Notifications.instrument(\"start_processing.action_controller\", raw_payload)\n", "65": "\n", "66": " ActiveSupport::Notifications.instrument(\"process_action.action_controller\", raw_payload) do |payload|\n", "67": " result = super\n", "68": " payload[:response] = response\n" }, "context": "all" }, { "number": "259", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal/params_wrapper.rb", "method": "process_action", "source": { "257": " def process_action(*)\n", "258": " _perform_parameter_wrapping if _wrapper_enabled?\n", "259": " super\n", "260": " end\n", "261": "\n" }, "context": "all" }, { "number": "27", "file": "[GEM_ROOT]/gems/activerecord-7.0.7.2/lib/active_record/railties/controller_runtime.rb", "method": "process_action", "source": { "25": " # and it won't be cleaned up by the method below.\n", "26": " ActiveRecord::LogSubscriber.reset_runtime\n", "27": " super\n", "28": " end\n", "29": "\n" }, "context": "all" }, { "number": "120", "file": "[GEM_ROOT]/gems/scout_apm-5.3.5/lib/scout_apm/instruments/action_controller_rails_3_rails4.rb", "method": "process_action", "source": { "118": " req.start_layer( ScoutApm::Layer.new(\"Controller\", \"#{controller_path}/#{resolved_name}\") )\n", "119": " begin\n", "120": " super\n", "121": " rescue\n", "122": " req.error!\n" }, "context": "all" }, { "number": "151", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/abstract_controller/base.rb", "method": "process", "source": { "149": " @_response_body = nil\n", "150": "\n", "151": " process_action(action_name, *args)\n", "152": " end\n", "153": " ruby2_keywords(:process)\n" }, "context": "all" }, { "number": "39", "file": "[GEM_ROOT]/gems/actionview-7.0.7.2/lib/action_view/rendering.rb", "method": "process", "source": { "37": " def process(...) # :nodoc:\n", "38": " old_config, I18n.config = I18n.config, I18nProxy.new(I18n.config, lookup_context)\n", "39": " super\n", "40": " ensure\n", "41": " I18n.config = old_config\n" }, "context": "all" }, { "number": "188", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal.rb", "method": "dispatch", "source": { "186": " set_request!(request)\n", "187": " set_response!(response)\n", "188": " process(name)\n", "189": " request.commit_flash\n", "190": " to_a\n" }, "context": "all" }, { "number": "251", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_controller/metal.rb", "method": "dispatch", "source": { "249": " middleware_stack.build(name) { |env| new.dispatch(name, req, res) }.call req.env\n", "250": " else\n", "251": " new.dispatch(name, req, res)\n", "252": " end\n", "253": " end\n" }, "context": "all" }, { "number": "49", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/routing/route_set.rb", "method": "dispatch", "source": { "47": "\n", "48": " def dispatch(controller, action, req, res)\n", "49": " controller.dispatch(action, req, res)\n", "50": " end\n", "51": " end\n" }, "context": "all" }, { "number": "32", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/routing/route_set.rb", "method": "serve", "source": { "30": " controller = controller req\n", "31": " res = controller.make_response! req\n", "32": " dispatch(controller, params[:action], req, res)\n", "33": " rescue ActionController::RoutingError\n", "34": " if @raise_on_name_error\n" }, "context": "all" }, { "number": "50", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/journey/router.rb", "method": "block in serve", "source": { "48": " req.path_parameters = tmp_params\n", "49": "\n", "50": " status, headers, body = route.app.serve(req)\n", "51": "\n", "52": " if \"pass\" == headers[\"X-Cascade\"]\n" }, "context": "all" }, { "number": "32", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/journey/router.rb", "method": "each", "source": { "30": "\n", "31": " def serve(req)\n", "32": " find_routes(req).each do |match, parameters, route|\n", "33": " set_params = req.path_parameters\n", "34": " path_info = req.path_info\n" }, "context": "all" }, { "number": "32", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/journey/router.rb", "method": "serve", "source": { "30": "\n", "31": " def serve(req)\n", "32": " find_routes(req).each do |match, parameters, route|\n", "33": " set_params = req.path_parameters\n", "34": " path_info = req.path_info\n" }, "context": "all" }, { "number": "852", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/routing/route_set.rb", "method": "call", "source": { "850": " req = make_request(env)\n", "851": " req.path_info = Journey::Router::Utils.normalize_path(req.path_info)\n", "852": " @router.serve(req)\n", "853": " end\n", "854": "\n" }, "context": "all" }, { "number": "29", "file": "[GEM_ROOT]/gems/scout_apm-5.3.5/lib/scout_apm/instruments/rails_router.rb", "method": "call_with_scout_instruments", "source": { "27": "\n", "28": " begin\n", "29": " call_without_scout_instruments(*args)\n", "30": " ensure\n", "31": " req.stop_layer\n" }, "context": "all" }, { "number": "17", "file": "[GEM_ROOT]/gems/scout_apm-5.3.5/lib/scout_apm/middleware.rb", "method": "call", "source": { "15": " def call(env)\n", "16": " if !@enabled || @started || @attempts > MAX_ATTEMPTS\n", "17": " @app.call(env)\n", "18": " else\n", "19": " attempt_to_start_agent\n" }, "context": "all" }, { "number": "36", "file": "[GEM_ROOT]/gems/warden-1.2.9/lib/warden/manager.rb", "method": "block in call", "source": { "34": " result = catch(:warden) do\n", "35": " env['warden'].on_request\n", "36": " @app.call(env)\n", "37": " end\n", "38": "\n" }, "context": "all" }, { "number": "34", "file": "[GEM_ROOT]/gems/warden-1.2.9/lib/warden/manager.rb", "method": "catch", "source": { "32": "\n", "33": " env['warden'] = Proxy.new(env, self)\n", "34": " result = catch(:warden) do\n", "35": " env['warden'].on_request\n", "36": " @app.call(env)\n" }, "context": "all" }, { "number": "34", "file": "[GEM_ROOT]/gems/warden-1.2.9/lib/warden/manager.rb", "method": "call", "source": { "32": "\n", "33": " env['warden'] = Proxy.new(env, self)\n", "34": " result = catch(:warden) do\n", "35": " env['warden'].on_request\n", "36": " @app.call(env)\n" }, "context": "all" }, { "number": "15", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/tempfile_reaper.rb", "method": "call", "source": { "13": " def call(env)\n", "14": " env[RACK_TEMPFILES] ||= []\n", "15": " status, headers, body = @app.call(env)\n", "16": " body_proxy = BodyProxy.new(body) do\n", "17": " env[RACK_TEMPFILES].each(&:close!) unless env[RACK_TEMPFILES].nil?\n" }, "context": "all" }, { "number": "27", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/conditional_get.rb", "method": "call", "source": { "25": " case env[REQUEST_METHOD]\n", "26": " when \"GET\", \"HEAD\"\n", "27": " status, headers, body = @app.call(env)\n", "28": " headers = Utils::HeaderHash[headers]\n", "29": " if status == 200 && fresh?(env, headers)\n" }, "context": "all" }, { "number": "12", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/head.rb", "method": "call", "source": { "10": "\n", "11": " def call(env)\n", "12": " status, headers, body = @app.call(env)\n", "13": "\n", "14": " if env[REQUEST_METHOD] == HEAD\n" }, "context": "all" }, { "number": "38", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/http/permissions_policy.rb", "method": "call", "source": { "36": " def call(env)\n", "37": " request = ActionDispatch::Request.new(env)\n", "38": " _, headers, _ = response = @app.call(env)\n", "39": "\n", "40": " return response unless html_response?(headers)\n" }, "context": "all" }, { "number": "36", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/http/content_security_policy.rb", "method": "call", "source": { "34": " def call(env)\n", "35": " request = ActionDispatch::Request.new env\n", "36": " status, headers, _ = response = @app.call(env)\n", "37": "\n", "38": " # Returning CSP headers with a 304 Not Modified is harmful, since nonces in the new\n" }, "context": "all" }, { "number": "266", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/session/abstract/id.rb", "method": "context", "source": { "264": " req = make_request env\n", "265": " prepare_session(req)\n", "266": " status, headers, body = app.call(req.env)\n", "267": " res = Rack::Response::Raw.new status, headers\n", "268": " commit_session(req, res)\n" }, "context": "all" }, { "number": "260", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/session/abstract/id.rb", "method": "call", "source": { "258": "\n", "259": " def call(env)\n", "260": " context(env)\n", "261": " end\n", "262": "\n" }, "context": "all" }, { "number": "704", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/cookies.rb", "method": "call", "source": { "702": " request = ActionDispatch::Request.new env\n", "703": "\n", "704": " status, headers, body = @app.call(env)\n", "705": "\n", "706": " if request.have_cookie_jar?\n" }, "context": "all" }, { "number": "27", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/callbacks.rb", "method": "block in call", "source": { "25": " error = nil\n", "26": " result = run_callbacks :call do\n", "27": " @app.call(env)\n", "28": " rescue => error\n", "29": " end\n" }, "context": "all" }, { "number": "99", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/callbacks.rb", "method": "run_callbacks", "source": { "97": "\n", "98": " if callbacks.empty?\n", "99": " yield if block_given?\n", "100": " else\n", "101": " env = Filters::Environment.new(self, false, nil)\n" }, "context": "all" }, { "number": "26", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/callbacks.rb", "method": "call", "source": { "24": " def call(env)\n", "25": " error = nil\n", "26": " result = run_callbacks :call do\n", "27": " @app.call(env)\n", "28": " rescue => error\n" }, "context": "all" }, { "number": "28", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/debug_exceptions.rb", "method": "call", "source": { "26": " def call(env)\n", "27": " request = ActionDispatch::Request.new env\n", "28": " _, headers, body = response = @app.call(env)\n", "29": "\n", "30": " if headers[\"X-Cascade\"] == \"pass\"\n" }, "context": "all" }, { "number": "29", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/show_exceptions.rb", "method": "call", "source": { "27": " def call(env)\n", "28": " request = ActionDispatch::Request.new env\n", "29": " @app.call(env)\n", "30": " rescue Exception => exception\n", "31": " if request.show_exceptions?\n" }, "context": "all" }, { "number": "18", "file": "[GEM_ROOT]/gems/lograge-0.12.0/lib/lograge/rails_ext/rack/logger.rb", "method": "call_app", "source": { "16": " def call_app(*args)\n", "17": " env = args.last\n", "18": " status, headers, body = @app.call(env)\n", "19": " # needs to have same return type as the Rails builtins being overridden, see https://github.com/roidrage/lograge/pull/333\n", "20": " # https://github.com/rails/rails/blob/be9d34b9bcb448b265114ebc28bef1a5b5e4c272/railties/lib/rails/rack/logger.rb#L37\n" }, "context": "all" }, { "number": "25", "file": "[GEM_ROOT]/gems/railties-7.0.7.2/lib/rails/rack/logger.rb", "method": "block in call", "source": { "23": "\n", "24": " if logger.respond_to?(:tagged)\n", "25": " logger.tagged(compute_tags(request)) { call_app(request, env) }\n", "26": " else\n", "27": " call_app(request, env)\n" }, "context": "all" }, { "number": "99", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/tagged_logging.rb", "method": "block in tagged", "source": { "97": " def tagged(*tags)\n", "98": " if block_given?\n", "99": " formatter.tagged(*tags) { yield self }\n", "100": " else\n", "101": " logger = ActiveSupport::TaggedLogging.new(self)\n" }, "context": "all" }, { "number": "37", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/tagged_logging.rb", "method": "tagged", "source": { "35": " def tagged(*tags)\n", "36": " new_tags = push_tags(*tags)\n", "37": " yield self\n", "38": " ensure\n", "39": " pop_tags(new_tags.size)\n" }, "context": "all" }, { "number": "99", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/tagged_logging.rb", "method": "tagged", "source": { "97": " def tagged(*tags)\n", "98": " if block_given?\n", "99": " formatter.tagged(*tags) { yield self }\n", "100": " else\n", "101": " logger = ActiveSupport::TaggedLogging.new(self)\n" }, "context": "all" }, { "number": "25", "file": "[GEM_ROOT]/gems/railties-7.0.7.2/lib/rails/rack/logger.rb", "method": "call", "source": { "23": "\n", "24": " if logger.respond_to?(:tagged)\n", "25": " logger.tagged(compute_tags(request)) { call_app(request, env) }\n", "26": " else\n", "27": " call_app(request, env)\n" }, "context": "all" }, { "number": "93", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/remote_ip.rb", "method": "call", "source": { "91": " req = ActionDispatch::Request.new env\n", "92": " req.remote_ip = GetIp.new(req, check_ip, proxies)\n", "93": " @app.call(req.env)\n", "94": " end\n", "95": "\n" }, "context": "all" }, { "number": "19", "file": "[GEM_ROOT]/gems/request_store-1.5.1/lib/request_store/middleware.rb", "method": "call", "source": { "17": " RequestStore.begin!\r\n", "18": "\r\n", "19": " status, headers, body = @app.call(env)\r\n", "20": "\r\n", "21": " body = Rack::BodyProxy.new(body) do\r\n" }, "context": "all" }, { "number": "26", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/request_id.rb", "method": "call", "source": { "24": " req = ActionDispatch::Request.new env\n", "25": " req.request_id = make_request_id(req.headers[@header])\n", "26": " @app.call(env).tap { |_status, headers, _body| headers[@header] = req.request_id }\n", "27": " end\n", "28": "\n" }, "context": "all" }, { "number": "24", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/method_override.rb", "method": "call", "source": { "22": " end\n", "23": "\n", "24": " @app.call(env)\n", "25": " end\n", "26": "\n" }, "context": "all" }, { "number": "22", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/runtime.rb", "method": "call", "source": { "20": " def call(env)\n", "21": " start_time = Utils.clock_time\n", "22": " status, headers, body = @app.call(env)\n", "23": " headers = Utils::HeaderHash[headers]\n", "24": "\n" }, "context": "all" }, { "number": "148", "file": "[GEM_ROOT]/gems/rack-timeout-0.6.3/lib/rack/timeout/core.rb", "method": "block in call", "source": { "146": "\n", "147": " response = timeout.timeout(info.timeout) do # perform request with timeout\n", "148": " begin @app.call(env) # boom, send request down the middleware chain\n", "149": " rescue RequestTimeoutException => e # will actually hardly ever get to this point because frameworks tend to catch this. see README for more\n", "150": " raise RequestTimeoutError.new(env), e.message, e.backtrace # but in case it does get here, re-raise RequestTimeoutException as RequestTimeoutError\n" }, "context": "all" }, { "number": "19", "file": "[GEM_ROOT]/gems/rack-timeout-0.6.3/lib/rack/timeout/support/timeout.rb", "method": "timeout", "source": { "17": " thr = Thread.current # reference to current thread to be used in timeout thread\n", "18": " job = @scheduler.run_in(secs) { @on_timeout.call thr } # schedule this thread to be timed out; should get cancelled if block completes on time\n", "19": " return block.call # do what you gotta do\n", "20": " ensure #\n", "21": " job.cancel! if job # cancel the scheduled timeout job; if the block completed on time, this\n" }, "context": "all" }, { "number": "147", "file": "[GEM_ROOT]/gems/rack-timeout-0.6.3/lib/rack/timeout/core.rb", "method": "call", "source": { "145": " end\n", "146": "\n", "147": " response = timeout.timeout(info.timeout) do # perform request with timeout\n", "148": " begin @app.call(env) # boom, send request down the middleware chain\n", "149": " rescue RequestTimeoutException => e # will actually hardly ever get to this point because frameworks tend to catch this. see README for more\n" }, "context": "all" }, { "number": "41", "file": "[GEM_ROOT]/gems/judoscale-ruby-1.4.1/lib/judoscale/request_middleware.rb", "method": "call", "source": { "39": " end\n", "40": "\n", "41": " @app.call(env)\n", "42": " end\n", "43": " end\n" }, "context": "all" }, { "number": "29", "file": "[GEM_ROOT]/gems/activesupport-7.0.7.2/lib/active_support/cache/strategy/local_cache_middleware.rb", "method": "call", "source": { "27": " def call(env)\n", "28": " LocalCacheRegistry.set_cache_for(local_cache_key, LocalStore.new)\n", "29": " response = @app.call(env)\n", "30": " response[2] = ::Rack::BodyProxy.new(response[2]) do\n", "31": " LocalCacheRegistry.set_cache_for(local_cache_key, nil)\n" }, "context": "all" }, { "number": "24", "file": "[GEM_ROOT]/gems/rack-rewrite-1.5.1/lib/rack/rewrite.rb", "method": "call", "source": { "22": " return rack_response unless rack_response === true\n", "23": " end\n", "24": " @app.call(env)\n", "25": " end\n", "26": " \n" }, "context": "all" }, { "number": "14", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/executor.rb", "method": "call", "source": { "12": " state = @executor.run!(reset: true)\n", "13": " begin\n", "14": " response = @app.call(env)\n", "15": " returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }\n", "16": " rescue => error\n" }, "context": "all" }, { "number": "23", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/static.rb", "method": "call", "source": { "21": "\n", "22": " def call(env)\n", "23": " @file_handler.attempt(env) || @app.call(env)\n", "24": " end\n", "25": " end\n" }, "context": "all" }, { "number": "110", "file": "[GEM_ROOT]/gems/rack-2.2.8/lib/rack/sendfile.rb", "method": "call", "source": { "108": "\n", "109": " def call(env)\n", "110": " status, headers, body = @app.call(env)\n", "111": " if body.respond_to?(:to_path)\n", "112": " case type = variation(env)\n" }, "context": "all" }, { "number": "77", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/ssl.rb", "method": "call", "source": { "75": "\n", "76": " if request.ssl?\n", "77": " @app.call(env).tap do |status, headers, body|\n", "78": " set_hsts_header! headers\n", "79": " flag_cookies_as_secure! headers if @secure_cookies && !@exclude.call(request)\n" }, "context": "all" }, { "number": "131", "file": "[GEM_ROOT]/gems/actionpack-7.0.7.2/lib/action_dispatch/middleware/host_authorization.rb", "method": "call", "source": { "129": "\n", "130": " def call(env)\n", "131": " return @app.call(env) if @permissions.empty?\n", "132": "\n", "133": " request = Request.new(env)\n" }, "context": "all" }, { "number": "58", "file": "[GEM_ROOT]/gems/scout_apm-5.3.5/lib/scout_apm/instruments/middleware_summary.rb", "method": "call", "source": { "56": " layer = ScoutApm::Layer.new(\"Middleware\", \"Summary\")\n", "57": " req.start_layer(layer)\n", "58": " @app.call(env)\n", "59": " ensure\n", "60": " req.stop_layer\n" }, "context": "all" }, { "number": "530", "file": "[GEM_ROOT]/gems/railties-7.0.7.2/lib/rails/engine.rb", "method": "call", "source": { "528": " def call(env)\n", "529": " req = build_request env\n", "530": " app.call req.env\n", "531": " end\n", "532": "\n" }, "context": "all" }, { "number": "270", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/configuration.rb", "method": "call", "source": { "268": " def call(env)\n", "269": " env[Const::PUMA_CONFIG] = @config\n", "270": " @app.call(env)\n", "271": " end\n", "272": " end\n" }, "context": "all" }, { "number": "100", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/request.rb", "method": "block in handle_request", "source": { "98": " if @supported_http_methods == :any || @supported_http_methods.key?(env[REQUEST_METHOD])\n", "99": " status, headers, app_body = @thread_pool.with_force_shutdown do\n", "100": " @app.call(env)\n", "101": " end\n", "102": " else\n" }, "context": "all" }, { "number": "344", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/thread_pool.rb", "method": "with_force_shutdown", "source": { "342": " t[:with_force_shutdown] = true\n", "343": " end\n", "344": " yield\n", "345": " ensure\n", "346": " t[:with_force_shutdown] = false\n" }, "context": "all" }, { "number": "99", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/request.rb", "method": "handle_request", "source": { "97": " begin\n", "98": " if @supported_http_methods == :any || @supported_http_methods.key?(env[REQUEST_METHOD])\n", "99": " status, headers, app_body = @thread_pool.with_force_shutdown do\n", "100": " @app.call(env)\n", "101": " end\n" }, "context": "all" }, { "number": "443", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/server.rb", "method": "process_client", "source": { "441": " while true\n", "442": " @requests_count += 1\n", "443": " case handle_request(client, requests + 1)\n", "444": " when false\n", "445": " break\n" }, "context": "all" }, { "number": "245", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/server.rb", "method": "block in run", "source": { "243": " @status = :run\n", "244": "\n", "245": " @thread_pool = ThreadPool.new(thread_name, @options) { |client| process_client client }\n", "246": "\n", "247": " if @queue_requests\n" }, "context": "all" }, { "number": "151", "file": "[GEM_ROOT]/gems/puma-6.3.1/lib/puma/thread_pool.rb", "method": "block in spawn_thread", "source": { "149": "\n", "150": " begin\n", "151": " @out_of_band_pending = true if block.call(work)\n", "152": " rescue Exception => e\n", "153": " STDERR.puts \"Error reached top of thread-pool: #{e.message} (#{e.class})\"\n" }, "context": "all" } ], "application_trace": [ { "number": "69", "file": "[PROJECT_ROOT]/app/controllers/application_controller.rb", "method": "check_redirect", "source": { "67": "\n", "68": " def check_redirect\n", "69": " return unless (redirect = Redirect.find_by(slug: request.path.sub(%r{^/}, \"\")))\n", "70": " redirect_to redirect.url\n", "71": " end\n" }, "application_file": "app/controllers/application_controller.rb", "context": "app" } ], "web_environment": { "SERVER_SOFTWARE": "puma 6.3.1 Mugi No Toki Itaru", "GATEWAY_INTERFACE": "CGI/1.2", "REQUEST_METHOD": "GET", "SERVER_PROTOCOL": "HTTP/1.1", "HTTP_HOST": "example.com", "HTTP_CONNECTION": "close", "HTTP_USER_AGENT": "Amazon CloudFront", "HTTP_X_AMZ_CF_ID": "yai2eezeewaipahthieN-Yt3y0gAunRuwBHH8A==", "HTTP_IF_NONE_MATCH": "W/\"fde6ca645252fa81edfdae38dbeef178\"", "HTTP_ACCEPT": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "HTTP_X_FORWARDED_FOR": "199.175.219.155, 64.252.73.106", "HTTP_VIA": "2.0 yai2eezeewaipahthieN.cloudfront.net (CloudFront), 1.1 vegur", "HTTP_ACCEPT_ENCODING": "gzip", "HTTP_IF_MODIFIED_SINCE": "Wed, 11 Oct 2023 20:51:58 GMT", "HTTP_SEC_CH_UA": "\"Google Chrome\";v=\"117\", \"Not;A=Brand\";v=\"8\", \"Chromium\";v=\"117\"", "HTTP_SEC_CH_UA_MOBILE": "?0", "HTTP_SEC_CH_UA_PLATFORM": "\"Windows\"", "HTTP_UPGRADE_INSECURE_REQUESTS": "1", "HTTP_SEC_PURPOSE": "prefetch;prerender", "HTTP_PURPOSE": "prefetch", "HTTP_SEC_FETCH_SITE": "none", "HTTP_SEC_FETCH_MODE": "navigate", "HTTP_SEC_FETCH_USER": "?1", "HTTP_SEC_FETCH_DEST": "document", "HTTP_X_REQUEST_ID": "fb536bf3-76d0-4936-a354-2a3d023b2cf4", "HTTP_X_FORWARDED_PROTO": "https", "HTTP_X_FORWARDED_PORT": "443", "HTTP_CONNECT_TIME": "1", "HTTP_X_REQUEST_START": "1697220489932", "HTTP_TOTAL_ROUTE_TIME": "0", "SERVER_NAME": "example.com", "SERVER_PORT": "443", "REMOTE_ADDR": "10.1.5.53", "HTTP_VERSION": "HTTP/1.1" }, "deploy": { "environment": "production", "revision": "0eaf61a9ec756be9f4bb511ad71b37baaa9b73ba", "repository": "https://github.com/spacely/testy-mctestface", "local_username": "ben@example.com", "created_at": "2023-10-06T20:52:51.878336Z", "changelog": [], "url": "https://github.com/spacely/testy-mctestface/compare/d4f90c876adf4a108ebb9a6f47b5562b59578d97...0eaf61a9ec756be9f4bb511ad71b37baaa9b73ba" }, "url": "https://app.honeybadger.io/projects/123321/faults/101337516/01HCN3JWWXRQX511BB83WM2X95" } }