bugsnag 6.13.0 → 6.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +11 -0
- data/CHANGELOG.md +88 -0
- data/VERSION +1 -1
- data/bugsnag.gemspec +1 -1
- data/lib/bugsnag.rb +145 -27
- data/lib/bugsnag/breadcrumbs/breadcrumbs.rb +0 -2
- data/lib/bugsnag/breadcrumbs/validator.rb +0 -6
- data/lib/bugsnag/cleaner.rb +129 -59
- data/lib/bugsnag/code_extractor.rb +137 -0
- data/lib/bugsnag/configuration.rb +226 -23
- data/lib/bugsnag/delivery/thread_queue.rb +18 -3
- data/lib/bugsnag/helpers.rb +2 -4
- data/lib/bugsnag/integrations/delayed_job.rb +13 -1
- data/lib/bugsnag/integrations/mailman.rb +2 -1
- data/lib/bugsnag/integrations/que.rb +2 -1
- data/lib/bugsnag/integrations/rack.rb +3 -1
- data/lib/bugsnag/integrations/railtie.rb +17 -5
- data/lib/bugsnag/integrations/rake.rb +4 -2
- data/lib/bugsnag/integrations/resque.rb +12 -5
- data/lib/bugsnag/integrations/shoryuken.rb +2 -1
- data/lib/bugsnag/integrations/sidekiq.rb +1 -2
- data/lib/bugsnag/middleware/delayed_job.rb +1 -0
- data/lib/bugsnag/middleware/discard_error_class.rb +30 -0
- data/lib/bugsnag/middleware/exception_meta_data.rb +15 -9
- data/lib/bugsnag/middleware/ignore_error_class.rb +2 -0
- data/lib/bugsnag/middleware/rack_request.rb +2 -4
- data/lib/bugsnag/middleware_stack.rb +38 -3
- data/lib/bugsnag/on_error_callbacks.rb +33 -0
- data/lib/bugsnag/report.rb +87 -15
- data/lib/bugsnag/session_tracker.rb +3 -3
- data/lib/bugsnag/stacktrace.rb +28 -72
- metadata +7 -621
- data/.buildkite/pipeline.yml +0 -470
- data/.github/PULL_REQUEST_TEMPLATE.md +0 -84
- data/.gitignore +0 -55
- data/.rdoc_options +0 -27
- data/.rspec +0 -3
- data/.rubocop.yml +0 -2
- data/.rubocop_todo.yml +0 -679
- data/CONTRIBUTING.md +0 -64
- data/Gemfile +0 -48
- data/Rakefile +0 -37
- data/TESTING.md +0 -81
- data/UPGRADING.md +0 -91
- data/docker-compose.yml +0 -46
- data/dockerfiles/Dockerfile.jruby-unit-tests +0 -13
- data/dockerfiles/Dockerfile.ruby-maze-runner +0 -26
- data/dockerfiles/Dockerfile.ruby-unit-tests +0 -12
- data/features/.gitignore +0 -1
- data/features/delayed_job.feature +0 -36
- data/features/fixtures/delayed_job/Dockerfile +0 -15
- data/features/fixtures/delayed_job/app/.gitignore +0 -21
- data/features/fixtures/delayed_job/app/Gemfile +0 -57
- data/features/fixtures/delayed_job/app/README.md +0 -24
- data/features/fixtures/delayed_job/app/Rakefile +0 -24
- data/features/fixtures/delayed_job/app/app/assets/config/manifest.js +0 -3
- data/features/fixtures/delayed_job/app/app/assets/images/.keep +0 -0
- data/features/fixtures/delayed_job/app/app/assets/javascripts/application.js +0 -16
- data/features/fixtures/delayed_job/app/app/assets/javascripts/cable.js +0 -13
- data/features/fixtures/delayed_job/app/app/assets/javascripts/channels/.keep +0 -0
- data/features/fixtures/delayed_job/app/app/assets/stylesheets/application.css +0 -15
- data/features/fixtures/delayed_job/app/app/channels/application_cable/channel.rb +0 -4
- data/features/fixtures/delayed_job/app/app/channels/application_cable/connection.rb +0 -4
- data/features/fixtures/delayed_job/app/app/controllers/application_controller.rb +0 -3
- data/features/fixtures/delayed_job/app/app/controllers/concerns/.keep +0 -0
- data/features/fixtures/delayed_job/app/app/helpers/application_helper.rb +0 -2
- data/features/fixtures/delayed_job/app/app/jobs/application_job.rb +0 -2
- data/features/fixtures/delayed_job/app/app/mailers/application_mailer.rb +0 -4
- data/features/fixtures/delayed_job/app/app/models/application_record.rb +0 -3
- data/features/fixtures/delayed_job/app/app/models/concerns/.keep +0 -0
- data/features/fixtures/delayed_job/app/app/models/test_model.rb +0 -10
- data/features/fixtures/delayed_job/app/app/views/layouts/application.html.erb +0 -14
- data/features/fixtures/delayed_job/app/app/views/layouts/mailer.html.erb +0 -13
- data/features/fixtures/delayed_job/app/app/views/layouts/mailer.text.erb +0 -1
- data/features/fixtures/delayed_job/app/config.ru +0 -5
- data/features/fixtures/delayed_job/app/config/application.rb +0 -15
- data/features/fixtures/delayed_job/app/config/boot.rb +0 -3
- data/features/fixtures/delayed_job/app/config/cable.yml +0 -9
- data/features/fixtures/delayed_job/app/config/database.yml +0 -25
- data/features/fixtures/delayed_job/app/config/environment.rb +0 -5
- data/features/fixtures/delayed_job/app/config/environments/development.rb +0 -54
- data/features/fixtures/delayed_job/app/config/environments/production.rb +0 -86
- data/features/fixtures/delayed_job/app/config/environments/test.rb +0 -42
- data/features/fixtures/delayed_job/app/config/initializers/application_controller_renderer.rb +0 -8
- data/features/fixtures/delayed_job/app/config/initializers/assets.rb +0 -11
- data/features/fixtures/delayed_job/app/config/initializers/backtrace_silencers.rb +0 -7
- data/features/fixtures/delayed_job/app/config/initializers/bugsnag.rb +0 -14
- data/features/fixtures/delayed_job/app/config/initializers/cookies_serializer.rb +0 -5
- data/features/fixtures/delayed_job/app/config/initializers/delayed_job.rb +0 -3
- data/features/fixtures/delayed_job/app/config/initializers/filter_parameter_logging.rb +0 -4
- data/features/fixtures/delayed_job/app/config/initializers/inflections.rb +0 -16
- data/features/fixtures/delayed_job/app/config/initializers/mime_types.rb +0 -4
- data/features/fixtures/delayed_job/app/config/initializers/new_framework_defaults.rb +0 -26
- data/features/fixtures/delayed_job/app/config/initializers/session_store.rb +0 -3
- data/features/fixtures/delayed_job/app/config/initializers/wrap_parameters.rb +0 -14
- data/features/fixtures/delayed_job/app/config/locales/en.yml +0 -23
- data/features/fixtures/delayed_job/app/config/puma.rb +0 -47
- data/features/fixtures/delayed_job/app/config/routes.rb +0 -3
- data/features/fixtures/delayed_job/app/config/secrets.yml +0 -22
- data/features/fixtures/delayed_job/app/config/spring.rb +0 -6
- data/features/fixtures/delayed_job/app/db/migrate/20181024232549_create_delayed_jobs.rb +0 -22
- data/features/fixtures/delayed_job/app/db/migrate/20181024232817_create_test_models.rb +0 -8
- data/features/fixtures/delayed_job/app/db/schema.rb +0 -30
- data/features/fixtures/delayed_job/app/db/seeds.rb +0 -7
- data/features/fixtures/delayed_job/app/lib/assets/.keep +0 -0
- data/features/fixtures/delayed_job/app/lib/tasks/.keep +0 -0
- data/features/fixtures/delayed_job/app/log/.keep +0 -0
- data/features/fixtures/delayed_job/app/public/404.html +0 -67
- data/features/fixtures/delayed_job/app/public/422.html +0 -67
- data/features/fixtures/delayed_job/app/public/500.html +0 -66
- data/features/fixtures/delayed_job/app/public/apple-touch-icon-precomposed.png +0 -0
- data/features/fixtures/delayed_job/app/public/apple-touch-icon.png +0 -0
- data/features/fixtures/delayed_job/app/public/favicon.ico +0 -0
- data/features/fixtures/delayed_job/app/public/robots.txt +0 -5
- data/features/fixtures/delayed_job/app/test/controllers/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/fixtures/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/fixtures/files/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/fixtures/test_models.yml +0 -11
- data/features/fixtures/delayed_job/app/test/helpers/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/integration/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/mailers/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/models/.keep +0 -0
- data/features/fixtures/delayed_job/app/test/models/test_model_test.rb +0 -7
- data/features/fixtures/delayed_job/app/test/test_helper.rb +0 -10
- data/features/fixtures/delayed_job/app/tmp/.keep +0 -0
- data/features/fixtures/docker-compose.yml +0 -299
- data/features/fixtures/expected_breadcrumbs/active_job.json +0 -9
- data/features/fixtures/expected_breadcrumbs/mongo_failed.json +0 -15
- data/features/fixtures/expected_breadcrumbs/mongo_filtered_request.json +0 -15
- data/features/fixtures/expected_breadcrumbs/mongo_filtered_result.json +0 -15
- data/features/fixtures/expected_breadcrumbs/mongo_success.json +0 -14
- data/features/fixtures/expected_breadcrumbs/request.json +0 -13
- data/features/fixtures/expected_breadcrumbs/sql_with_bindings.json +0 -12
- data/features/fixtures/expected_breadcrumbs/sql_without_bindings.json +0 -11
- data/features/fixtures/plain/.dockerignore +0 -2
- data/features/fixtures/plain/Dockerfile +0 -11
- data/features/fixtures/plain/app/Gemfile +0 -3
- data/features/fixtures/plain/app/app.rb +0 -38
- data/features/fixtures/plain/app/configuration/api_key.rb +0 -9
- data/features/fixtures/plain/app/configuration/proxy.rb +0 -14
- data/features/fixtures/plain/app/configuration/send_handled.rb +0 -7
- data/features/fixtures/plain/app/configuration/send_unhandled.rb +0 -9
- data/features/fixtures/plain/app/delivery/fork_threadpool.rb +0 -27
- data/features/fixtures/plain/app/delivery/synchronous.rb +0 -14
- data/features/fixtures/plain/app/delivery/threadpool.rb +0 -14
- data/features/fixtures/plain/app/exception_data/crash.rb +0 -34
- data/features/fixtures/plain/app/exception_data/handled_context.rb +0 -10
- data/features/fixtures/plain/app/exception_data/handled_hash.rb +0 -10
- data/features/fixtures/plain/app/exception_data/handled_meta_data.rb +0 -10
- data/features/fixtures/plain/app/exception_data/handled_user_id.rb +0 -10
- data/features/fixtures/plain/app/exception_data/unhandled_context.rb +0 -7
- data/features/fixtures/plain/app/exception_data/unhandled_hash.rb +0 -7
- data/features/fixtures/plain/app/exception_data/unhandled_meta_data.rb +0 -7
- data/features/fixtures/plain/app/exception_data/unhandled_user_id.rb +0 -7
- data/features/fixtures/plain/app/filters/additional_filters.rb +0 -11
- data/features/fixtures/plain/app/filters/default_filters.rb +0 -15
- data/features/fixtures/plain/app/handled/block_metadata.rb +0 -15
- data/features/fixtures/plain/app/handled/ignore_exception.rb +0 -12
- data/features/fixtures/plain/app/handled/notify_exception.rb +0 -9
- data/features/fixtures/plain/app/handled/notify_string.rb +0 -9
- data/features/fixtures/plain/app/ignore_classes/handled.rb +0 -8
- data/features/fixtures/plain/app/ignore_classes/ignore_error.rb +0 -8
- data/features/fixtures/plain/app/ignore_classes/unhandled.rb +0 -4
- data/features/fixtures/plain/app/report_modification/add_tab.rb +0 -16
- data/features/fixtures/plain/app/report_modification/add_tab_existing.rb +0 -22
- data/features/fixtures/plain/app/report_modification/add_tab_override.rb +0 -19
- data/features/fixtures/plain/app/report_modification/ignore_report.rb +0 -9
- data/features/fixtures/plain/app/report_modification/initiators/handled_before_notify.rb +0 -10
- data/features/fixtures/plain/app/report_modification/initiators/handled_block.rb +0 -8
- data/features/fixtures/plain/app/report_modification/initiators/unhandled_before_notify.rb +0 -11
- data/features/fixtures/plain/app/report_modification/modify_api_key.rb +0 -9
- data/features/fixtures/plain/app/report_modification/modify_severity.rb +0 -9
- data/features/fixtures/plain/app/report_modification/remove_user_details.rb +0 -14
- data/features/fixtures/plain/app/report_modification/set_custom_user_details.rb +0 -16
- data/features/fixtures/plain/app/report_modification/set_user_details.rb +0 -13
- data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_before_notify.rb +0 -29
- data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_block.rb +0 -24
- data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_before_notify.rb +0 -26
- data/features/fixtures/plain/app/stack_frame_modification/mark_frames_in_project.rb +0 -13
- data/features/fixtures/plain/app/stack_frame_modification/remove_stack_frame.rb +0 -9
- data/features/fixtures/plain/app/unhandled/bad_syntax.rb +0 -1
- data/features/fixtures/plain/app/unhandled/custom_error.rb +0 -9
- data/features/fixtures/plain/app/unhandled/interrupt.rb +0 -6
- data/features/fixtures/plain/app/unhandled/load_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/local_jump_error.rb +0 -10
- data/features/fixtures/plain/app/unhandled/name_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/no_method_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/runtime_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/syntax_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/system_call_error.rb +0 -6
- data/features/fixtures/plain/app/unhandled/system_exit.rb +0 -6
- data/features/fixtures/plain/json/delivery_fork.json +0 -4
- data/features/fixtures/plain/json/delivery_synchronous.json +0 -4
- data/features/fixtures/plain/json/delivery_threadpool.json +0 -4
- data/features/fixtures/plain/json/filters_default_metadata_filters.json +0 -9
- data/features/fixtures/rack1/.dockerignore +0 -1
- data/features/fixtures/rack1/Dockerfile +0 -13
- data/features/fixtures/rack1/Gemfile +0 -4
- data/features/fixtures/rack1/app.rb +0 -8
- data/features/fixtures/rack2/.dockerignore +0 -1
- data/features/fixtures/rack2/Dockerfile +0 -13
- data/features/fixtures/rack2/Gemfile +0 -4
- data/features/fixtures/rack2/app.rb +0 -8
- data/features/fixtures/rails3/.dockerignore +0 -1
- data/features/fixtures/rails3/Dockerfile +0 -15
- data/features/fixtures/rails3/app/.gitignore +0 -15
- data/features/fixtures/rails3/app/Gemfile +0 -17
- data/features/fixtures/rails3/app/Rakefile +0 -7
- data/features/fixtures/rails3/app/app/assets/images/rails.png +0 -0
- data/features/fixtures/rails3/app/app/assets/javascripts/application.js +0 -15
- data/features/fixtures/rails3/app/app/assets/stylesheets/application.css +0 -13
- data/features/fixtures/rails3/app/app/controllers/api_key_controller.rb +0 -20
- data/features/fixtures/rails3/app/app/controllers/app_type_controller.rb +0 -20
- data/features/fixtures/rails3/app/app/controllers/app_version_controller.rb +0 -25
- data/features/fixtures/rails3/app/app/controllers/application_controller.rb +0 -7
- data/features/fixtures/rails3/app/app/controllers/auto_notify_controller.rb +0 -31
- data/features/fixtures/rails3/app/app/controllers/before_notify_controller.rb +0 -44
- data/features/fixtures/rails3/app/app/controllers/breadcrumbs_controller.rb +0 -19
- data/features/fixtures/rails3/app/app/controllers/handled_controller.rb +0 -26
- data/features/fixtures/rails3/app/app/controllers/ignore_classes_controller.rb +0 -23
- data/features/fixtures/rails3/app/app/controllers/metadata_filters_controller.rb +0 -16
- data/features/fixtures/rails3/app/app/controllers/project_root_controller.rb +0 -25
- data/features/fixtures/rails3/app/app/controllers/release_stage_controller.rb +0 -20
- data/features/fixtures/rails3/app/app/controllers/send_code_controller.rb +0 -20
- data/features/fixtures/rails3/app/app/controllers/send_environment_controller.rb +0 -12
- data/features/fixtures/rails3/app/app/controllers/session_tracking_controller.rb +0 -24
- data/features/fixtures/rails3/app/app/controllers/unhandled_controller.rb +0 -11
- data/features/fixtures/rails3/app/app/controllers/warden_controller.rb +0 -30
- data/features/fixtures/rails3/app/app/helpers/application_helper.rb +0 -2
- data/features/fixtures/rails3/app/app/mailers/.gitkeep +0 -0
- data/features/fixtures/rails3/app/app/models/.gitkeep +0 -0
- data/features/fixtures/rails3/app/app/models/user.rb +0 -6
- data/features/fixtures/rails3/app/app/views/layouts/application.html.erb +0 -14
- data/features/fixtures/rails3/app/config.ru +0 -4
- data/features/fixtures/rails3/app/config/application.rb +0 -67
- data/features/fixtures/rails3/app/config/boot.rb +0 -6
- data/features/fixtures/rails3/app/config/database.yml +0 -31
- data/features/fixtures/rails3/app/config/environment.rb +0 -5
- data/features/fixtures/rails3/app/config/environments/development.rb +0 -37
- data/features/fixtures/rails3/app/config/environments/production.rb +0 -67
- data/features/fixtures/rails3/app/config/environments/rails_env.rb +0 -37
- data/features/fixtures/rails3/app/config/initializers/bugsnag.rb +0 -20
- data/features/fixtures/rails3/app/config/initializers/secret_token.rb +0 -7
- data/features/fixtures/rails3/app/config/initializers/session_store.rb +0 -8
- data/features/fixtures/rails3/app/config/initializers/warden.rb +0 -3
- data/features/fixtures/rails3/app/config/initializers/wrap_parameters.rb +0 -14
- data/features/fixtures/rails3/app/config/locales/en.yml +0 -5
- data/features/fixtures/rails3/app/config/routes.rb +0 -19
- data/features/fixtures/rails3/app/db/migrate/20180423142727_create_users.rb +0 -45
- data/features/fixtures/rails3/app/db/schema.rb +0 -37
- data/features/fixtures/rails3/app/db/seeds.rb +0 -7
- data/features/fixtures/rails3/app/lib/assets/.gitkeep +0 -0
- data/features/fixtures/rails3/app/lib/strategies/token_strategy.rb +0 -12
- data/features/fixtures/rails3/app/lib/tasks/.gitkeep +0 -0
- data/features/fixtures/rails3/app/log/.gitkeep +0 -0
- data/features/fixtures/rails3/app/public/404.html +0 -26
- data/features/fixtures/rails3/app/public/422.html +0 -26
- data/features/fixtures/rails3/app/public/500.html +0 -25
- data/features/fixtures/rails3/app/public/favicon.ico +0 -0
- data/features/fixtures/rails3/app/public/index.html +0 -241
- data/features/fixtures/rails3/app/public/robots.txt +0 -5
- data/features/fixtures/rails3/app/script/rails +0 -6
- data/features/fixtures/rails4/.dockerignore +0 -1
- data/features/fixtures/rails4/Dockerfile +0 -17
- data/features/fixtures/rails4/app/.gitignore +0 -16
- data/features/fixtures/rails4/app/Gemfile +0 -46
- data/features/fixtures/rails4/app/README.rdoc +0 -28
- data/features/fixtures/rails4/app/Rakefile +0 -6
- data/features/fixtures/rails4/app/app/assets/images/.keep +0 -0
- data/features/fixtures/rails4/app/app/assets/javascripts/application.js +0 -16
- data/features/fixtures/rails4/app/app/assets/stylesheets/application.css +0 -13
- data/features/fixtures/rails4/app/app/controllers/api_key_controller.rb +0 -20
- data/features/fixtures/rails4/app/app/controllers/app_type_controller.rb +0 -20
- data/features/fixtures/rails4/app/app/controllers/app_version_controller.rb +0 -25
- data/features/fixtures/rails4/app/app/controllers/application_controller.rb +0 -7
- data/features/fixtures/rails4/app/app/controllers/auto_notify_controller.rb +0 -31
- data/features/fixtures/rails4/app/app/controllers/before_notify_controller.rb +0 -44
- data/features/fixtures/rails4/app/app/controllers/breadcrumbs_controller.rb +0 -26
- data/features/fixtures/rails4/app/app/controllers/concerns/.keep +0 -0
- data/features/fixtures/rails4/app/app/controllers/devise_controller.rb +0 -32
- data/features/fixtures/rails4/app/app/controllers/handled_controller.rb +0 -26
- data/features/fixtures/rails4/app/app/controllers/ignore_classes_controller.rb +0 -23
- data/features/fixtures/rails4/app/app/controllers/metadata_filters_controller.rb +0 -16
- data/features/fixtures/rails4/app/app/controllers/mongo_controller.rb +0 -23
- data/features/fixtures/rails4/app/app/controllers/project_root_controller.rb +0 -25
- data/features/fixtures/rails4/app/app/controllers/release_stage_controller.rb +0 -20
- data/features/fixtures/rails4/app/app/controllers/send_code_controller.rb +0 -20
- data/features/fixtures/rails4/app/app/controllers/send_environment_controller.rb +0 -12
- data/features/fixtures/rails4/app/app/controllers/session_tracking_controller.rb +0 -24
- data/features/fixtures/rails4/app/app/controllers/unhandled_controller.rb +0 -11
- data/features/fixtures/rails4/app/app/helpers/application_helper.rb +0 -2
- data/features/fixtures/rails4/app/app/jobs/application_job.rb +0 -2
- data/features/fixtures/rails4/app/app/jobs/notify_job.rb +0 -5
- data/features/fixtures/rails4/app/app/mailers/.keep +0 -0
- data/features/fixtures/rails4/app/app/models/.keep +0 -0
- data/features/fixtures/rails4/app/app/models/concerns/.keep +0 -0
- data/features/fixtures/rails4/app/app/models/mongo_model.rb +0 -6
- data/features/fixtures/rails4/app/app/models/user.rb +0 -6
- data/features/fixtures/rails4/app/app/views/layouts/application.html.erb +0 -14
- data/features/fixtures/rails4/app/config.ru +0 -4
- data/features/fixtures/rails4/app/config/application.rb +0 -23
- data/features/fixtures/rails4/app/config/boot.rb +0 -4
- data/features/fixtures/rails4/app/config/database.yml +0 -31
- data/features/fixtures/rails4/app/config/environment.rb +0 -5
- data/features/fixtures/rails4/app/config/environments/development.rb +0 -31
- data/features/fixtures/rails4/app/config/environments/production.rb +0 -81
- data/features/fixtures/rails4/app/config/environments/rails_env.rb +0 -30
- data/features/fixtures/rails4/app/config/environments/test.rb +0 -31
- data/features/fixtures/rails4/app/config/initializers/backtrace_silencers.rb +0 -7
- data/features/fixtures/rails4/app/config/initializers/bugsnag.rb +0 -20
- data/features/fixtures/rails4/app/config/initializers/devise.rb +0 -283
- data/features/fixtures/rails4/app/config/initializers/filter_parameter_logging.rb +0 -5
- data/features/fixtures/rails4/app/config/initializers/inflections.rb +0 -16
- data/features/fixtures/rails4/app/config/initializers/mime_types.rb +0 -5
- data/features/fixtures/rails4/app/config/initializers/secret_token.rb +0 -12
- data/features/fixtures/rails4/app/config/initializers/session_store.rb +0 -3
- data/features/fixtures/rails4/app/config/initializers/wrap_parameters.rb +0 -14
- data/features/fixtures/rails4/app/config/locales/devise.en.yml +0 -64
- data/features/fixtures/rails4/app/config/locales/en.yml +0 -23
- data/features/fixtures/rails4/app/config/mongoid.yml +0 -22
- data/features/fixtures/rails4/app/config/routes.rb +0 -21
- data/features/fixtures/rails4/app/db/migrate/20180420160315_devise_create_users.rb +0 -47
- data/features/fixtures/rails4/app/db/seeds.rb +0 -7
- data/features/fixtures/rails4/app/lib/assets/.keep +0 -0
- data/features/fixtures/rails4/app/lib/tasks/.keep +0 -0
- data/features/fixtures/rails4/app/log/.keep +0 -0
- data/features/fixtures/rails4/app/public/404.html +0 -58
- data/features/fixtures/rails4/app/public/422.html +0 -58
- data/features/fixtures/rails4/app/public/500.html +0 -57
- data/features/fixtures/rails4/app/public/favicon.ico +0 -0
- data/features/fixtures/rails4/app/public/robots.txt +0 -5
- data/features/fixtures/rails4/app/test/controllers/.keep +0 -0
- data/features/fixtures/rails4/app/test/fixtures/.keep +0 -0
- data/features/fixtures/rails4/app/test/helpers/.keep +0 -0
- data/features/fixtures/rails4/app/test/integration/.keep +0 -0
- data/features/fixtures/rails4/app/test/mailers/.keep +0 -0
- data/features/fixtures/rails4/app/test/models/.keep +0 -0
- data/features/fixtures/rails4/app/test/test_helper.rb +0 -15
- data/features/fixtures/rails5/.dockerignore +0 -1
- data/features/fixtures/rails5/Dockerfile +0 -17
- data/features/fixtures/rails5/app/.gitignore +0 -21
- data/features/fixtures/rails5/app/Gemfile +0 -52
- data/features/fixtures/rails5/app/README.md +0 -24
- data/features/fixtures/rails5/app/Rakefile +0 -6
- data/features/fixtures/rails5/app/app/assets/config/manifest.js +0 -3
- data/features/fixtures/rails5/app/app/assets/images/.keep +0 -0
- data/features/fixtures/rails5/app/app/assets/javascripts/application.js +0 -16
- data/features/fixtures/rails5/app/app/assets/javascripts/cable.js +0 -13
- data/features/fixtures/rails5/app/app/assets/javascripts/channels/.keep +0 -0
- data/features/fixtures/rails5/app/app/assets/stylesheets/application.css +0 -15
- data/features/fixtures/rails5/app/app/channels/application_cable/channel.rb +0 -4
- data/features/fixtures/rails5/app/app/channels/application_cable/connection.rb +0 -4
- data/features/fixtures/rails5/app/app/controllers/api_key_controller.rb +0 -16
- data/features/fixtures/rails5/app/app/controllers/app_type_controller.rb +0 -16
- data/features/fixtures/rails5/app/app/controllers/app_version_controller.rb +0 -21
- data/features/fixtures/rails5/app/app/controllers/application_controller.rb +0 -7
- data/features/fixtures/rails5/app/app/controllers/auto_notify_controller.rb +0 -27
- data/features/fixtures/rails5/app/app/controllers/before_notify_controller.rb +0 -40
- data/features/fixtures/rails5/app/app/controllers/breadcrumbs_controller.rb +0 -24
- data/features/fixtures/rails5/app/app/controllers/clearance_controller.rb +0 -33
- data/features/fixtures/rails5/app/app/controllers/concerns/.keep +0 -0
- data/features/fixtures/rails5/app/app/controllers/handled_controller.rb +0 -22
- data/features/fixtures/rails5/app/app/controllers/ignore_classes_controller.rb +0 -19
- data/features/fixtures/rails5/app/app/controllers/metadata_filters_controller.rb +0 -12
- data/features/fixtures/rails5/app/app/controllers/mongo_controller.rb +0 -22
- data/features/fixtures/rails5/app/app/controllers/project_root_controller.rb +0 -21
- data/features/fixtures/rails5/app/app/controllers/release_stage_controller.rb +0 -16
- data/features/fixtures/rails5/app/app/controllers/send_code_controller.rb +0 -16
- data/features/fixtures/rails5/app/app/controllers/send_environment_controller.rb +0 -8
- data/features/fixtures/rails5/app/app/controllers/session_tracking_controller.rb +0 -20
- data/features/fixtures/rails5/app/app/controllers/unhandled_controller.rb +0 -7
- data/features/fixtures/rails5/app/app/helpers/application_helper.rb +0 -2
- data/features/fixtures/rails5/app/app/jobs/application_job.rb +0 -2
- data/features/fixtures/rails5/app/app/jobs/notify_job.rb +0 -5
- data/features/fixtures/rails5/app/app/mailers/application_mailer.rb +0 -4
- data/features/fixtures/rails5/app/app/models/application_record.rb +0 -3
- data/features/fixtures/rails5/app/app/models/concerns/.keep +0 -0
- data/features/fixtures/rails5/app/app/models/mongo_model.rb +0 -6
- data/features/fixtures/rails5/app/app/models/user.rb +0 -3
- data/features/fixtures/rails5/app/app/views/layouts/application.html.erb +0 -14
- data/features/fixtures/rails5/app/app/views/layouts/mailer.html.erb +0 -13
- data/features/fixtures/rails5/app/app/views/layouts/mailer.text.erb +0 -1
- data/features/fixtures/rails5/app/config.ru +0 -5
- data/features/fixtures/rails5/app/config/application.rb +0 -15
- data/features/fixtures/rails5/app/config/boot.rb +0 -3
- data/features/fixtures/rails5/app/config/cable.yml +0 -9
- data/features/fixtures/rails5/app/config/database.yml +0 -29
- data/features/fixtures/rails5/app/config/environment.rb +0 -5
- data/features/fixtures/rails5/app/config/environments/development.rb +0 -55
- data/features/fixtures/rails5/app/config/environments/production.rb +0 -87
- data/features/fixtures/rails5/app/config/environments/rails_env.rb +0 -55
- data/features/fixtures/rails5/app/config/environments/test.rb +0 -55
- data/features/fixtures/rails5/app/config/initializers/assets.rb +0 -11
- data/features/fixtures/rails5/app/config/initializers/backtrace_silencers.rb +0 -7
- data/features/fixtures/rails5/app/config/initializers/bugsnag.rb +0 -20
- data/features/fixtures/rails5/app/config/initializers/clearance.rb +0 -5
- data/features/fixtures/rails5/app/config/initializers/cookies_serializer.rb +0 -5
- data/features/fixtures/rails5/app/config/initializers/filter_parameter_logging.rb +0 -5
- data/features/fixtures/rails5/app/config/initializers/inflections.rb +0 -16
- data/features/fixtures/rails5/app/config/initializers/mime_types.rb +0 -4
- data/features/fixtures/rails5/app/config/initializers/new_framework_defaults.rb +0 -24
- data/features/fixtures/rails5/app/config/initializers/session_store.rb +0 -3
- data/features/fixtures/rails5/app/config/initializers/wrap_parameters.rb +0 -14
- data/features/fixtures/rails5/app/config/locales/devise.en.yml +0 -64
- data/features/fixtures/rails5/app/config/locales/en.yml +0 -23
- data/features/fixtures/rails5/app/config/mongoid.yml +0 -23
- data/features/fixtures/rails5/app/config/puma.rb +0 -47
- data/features/fixtures/rails5/app/config/routes.rb +0 -62
- data/features/fixtures/rails5/app/config/secrets.yml +0 -25
- data/features/fixtures/rails5/app/config/spring.rb +0 -6
- data/features/fixtures/rails5/app/db/migrate/20180426095545_create_users.rb +0 -17
- data/features/fixtures/rails5/app/db/schema.rb +0 -29
- data/features/fixtures/rails5/app/db/seeds.rb +0 -7
- data/features/fixtures/rails5/app/lib/assets/.keep +0 -0
- data/features/fixtures/rails5/app/lib/tasks/.keep +0 -0
- data/features/fixtures/rails5/app/log/.keep +0 -0
- data/features/fixtures/rails5/app/public/404.html +0 -67
- data/features/fixtures/rails5/app/public/422.html +0 -67
- data/features/fixtures/rails5/app/public/500.html +0 -66
- data/features/fixtures/rails5/app/public/apple-touch-icon-precomposed.png +0 -0
- data/features/fixtures/rails5/app/public/apple-touch-icon.png +0 -0
- data/features/fixtures/rails5/app/public/favicon.ico +0 -0
- data/features/fixtures/rails5/app/public/robots.txt +0 -5
- data/features/fixtures/rails5/app/test/controllers/.keep +0 -0
- data/features/fixtures/rails5/app/test/fixtures/.keep +0 -0
- data/features/fixtures/rails5/app/test/fixtures/files/.keep +0 -0
- data/features/fixtures/rails5/app/test/helpers/.keep +0 -0
- data/features/fixtures/rails5/app/test/integration/.keep +0 -0
- data/features/fixtures/rails5/app/test/mailers/.keep +0 -0
- data/features/fixtures/rails5/app/test/models/.keep +0 -0
- data/features/fixtures/rails5/app/test/test_helper.rb +0 -10
- data/features/fixtures/rails5/app/tmp/.keep +0 -0
- data/features/fixtures/rails6/.dockerignore +0 -1
- data/features/fixtures/rails6/Dockerfile +0 -26
- data/features/fixtures/rails6/app/.browserslistrc +0 -1
- data/features/fixtures/rails6/app/.gitignore +0 -35
- data/features/fixtures/rails6/app/.ruby-version +0 -1
- data/features/fixtures/rails6/app/Gemfile +0 -58
- data/features/fixtures/rails6/app/README.md +0 -24
- data/features/fixtures/rails6/app/Rakefile +0 -6
- data/features/fixtures/rails6/app/app/assets/config/manifest.js +0 -2
- data/features/fixtures/rails6/app/app/assets/images/.keep +0 -0
- data/features/fixtures/rails6/app/app/assets/stylesheets/application.css +0 -15
- data/features/fixtures/rails6/app/app/channels/application_cable/channel.rb +0 -4
- data/features/fixtures/rails6/app/app/channels/application_cable/connection.rb +0 -4
- data/features/fixtures/rails6/app/app/controllers/api_key_controller.rb +0 -16
- data/features/fixtures/rails6/app/app/controllers/app_type_controller.rb +0 -16
- data/features/fixtures/rails6/app/app/controllers/app_version_controller.rb +0 -21
- data/features/fixtures/rails6/app/app/controllers/application_controller.rb +0 -7
- data/features/fixtures/rails6/app/app/controllers/auto_notify_controller.rb +0 -27
- data/features/fixtures/rails6/app/app/controllers/before_notify_controller.rb +0 -40
- data/features/fixtures/rails6/app/app/controllers/breadcrumbs_controller.rb +0 -24
- data/features/fixtures/rails6/app/app/controllers/clearance_controller.rb +0 -33
- data/features/fixtures/rails6/app/app/controllers/concerns/.keep +0 -0
- data/features/fixtures/rails6/app/app/controllers/handled_controller.rb +0 -22
- data/features/fixtures/rails6/app/app/controllers/ignore_classes_controller.rb +0 -19
- data/features/fixtures/rails6/app/app/controllers/metadata_filters_controller.rb +0 -12
- data/features/fixtures/rails6/app/app/controllers/mongo_controller.rb +0 -22
- data/features/fixtures/rails6/app/app/controllers/project_root_controller.rb +0 -21
- data/features/fixtures/rails6/app/app/controllers/release_stage_controller.rb +0 -16
- data/features/fixtures/rails6/app/app/controllers/send_code_controller.rb +0 -16
- data/features/fixtures/rails6/app/app/controllers/send_environment_controller.rb +0 -8
- data/features/fixtures/rails6/app/app/controllers/session_tracking_controller.rb +0 -20
- data/features/fixtures/rails6/app/app/controllers/unhandled_controller.rb +0 -7
- data/features/fixtures/rails6/app/app/helpers/application_helper.rb +0 -2
- data/features/fixtures/rails6/app/app/javascript/channels/consumer.js +0 -6
- data/features/fixtures/rails6/app/app/javascript/channels/index.js +0 -5
- data/features/fixtures/rails6/app/app/javascript/packs/application.js +0 -9
- data/features/fixtures/rails6/app/app/jobs/application_job.rb +0 -7
- data/features/fixtures/rails6/app/app/jobs/notify_job.rb +0 -5
- data/features/fixtures/rails6/app/app/mailers/application_mailer.rb +0 -4
- data/features/fixtures/rails6/app/app/models/application_record.rb +0 -3
- data/features/fixtures/rails6/app/app/models/concerns/.keep +0 -0
- data/features/fixtures/rails6/app/app/models/mongo_model.rb +0 -6
- data/features/fixtures/rails6/app/app/models/user.rb +0 -3
- data/features/fixtures/rails6/app/app/views/layouts/application.html.erb +0 -15
- data/features/fixtures/rails6/app/app/views/layouts/mailer.html.erb +0 -13
- data/features/fixtures/rails6/app/app/views/layouts/mailer.text.erb +0 -1
- data/features/fixtures/rails6/app/babel.config.js +0 -70
- data/features/fixtures/rails6/app/config.ru +0 -5
- data/features/fixtures/rails6/app/config/application.rb +0 -19
- data/features/fixtures/rails6/app/config/boot.rb +0 -4
- data/features/fixtures/rails6/app/config/cable.yml +0 -13
- data/features/fixtures/rails6/app/config/credentials.yml.enc +0 -1
- data/features/fixtures/rails6/app/config/database.yml +0 -29
- data/features/fixtures/rails6/app/config/environment.rb +0 -5
- data/features/fixtures/rails6/app/config/environments/development.rb +0 -64
- data/features/fixtures/rails6/app/config/environments/production.rb +0 -113
- data/features/fixtures/rails6/app/config/environments/rails_env.rb +0 -56
- data/features/fixtures/rails6/app/config/environments/test.rb +0 -48
- data/features/fixtures/rails6/app/config/initializers/application_controller_renderer.rb +0 -8
- data/features/fixtures/rails6/app/config/initializers/assets.rb +0 -14
- data/features/fixtures/rails6/app/config/initializers/backtrace_silencers.rb +0 -7
- data/features/fixtures/rails6/app/config/initializers/bugsnag.rb +0 -20
- data/features/fixtures/rails6/app/config/initializers/content_security_policy.rb +0 -27
- data/features/fixtures/rails6/app/config/initializers/cookies_serializer.rb +0 -5
- data/features/fixtures/rails6/app/config/initializers/filter_parameter_logging.rb +0 -5
- data/features/fixtures/rails6/app/config/initializers/inflections.rb +0 -16
- data/features/fixtures/rails6/app/config/initializers/mime_types.rb +0 -4
- data/features/fixtures/rails6/app/config/initializers/wrap_parameters.rb +0 -14
- data/features/fixtures/rails6/app/config/locales/en.yml +0 -33
- data/features/fixtures/rails6/app/config/mongoid.yml +0 -23
- data/features/fixtures/rails6/app/config/puma.rb +0 -35
- data/features/fixtures/rails6/app/config/routes.rb +0 -62
- data/features/fixtures/rails6/app/config/secrets.yml +0 -25
- data/features/fixtures/rails6/app/config/spring.rb +0 -6
- data/features/fixtures/rails6/app/config/storage.yml +0 -34
- data/features/fixtures/rails6/app/config/webpack/development.js +0 -5
- data/features/fixtures/rails6/app/config/webpack/environment.js +0 -3
- data/features/fixtures/rails6/app/config/webpack/production.js +0 -5
- data/features/fixtures/rails6/app/config/webpack/rails_env.js +0 -5
- data/features/fixtures/rails6/app/config/webpack/test.js +0 -5
- data/features/fixtures/rails6/app/config/webpacker.yml +0 -121
- data/features/fixtures/rails6/app/db/migrate/20180426095545_create_users.rb +0 -17
- data/features/fixtures/rails6/app/db/schema.rb +0 -29
- data/features/fixtures/rails6/app/db/seeds.rb +0 -7
- data/features/fixtures/rails6/app/lib/assets/.keep +0 -0
- data/features/fixtures/rails6/app/lib/tasks/.keep +0 -0
- data/features/fixtures/rails6/app/log/.keep +0 -0
- data/features/fixtures/rails6/app/package.json +0 -15
- data/features/fixtures/rails6/app/postcss.config.js +0 -12
- data/features/fixtures/rails6/app/public/404.html +0 -67
- data/features/fixtures/rails6/app/public/422.html +0 -67
- data/features/fixtures/rails6/app/public/500.html +0 -66
- data/features/fixtures/rails6/app/public/apple-touch-icon-precomposed.png +0 -0
- data/features/fixtures/rails6/app/public/apple-touch-icon.png +0 -0
- data/features/fixtures/rails6/app/public/favicon.ico +0 -0
- data/features/fixtures/rails6/app/public/robots.txt +0 -1
- data/features/fixtures/rails6/app/storage/.keep +0 -0
- data/features/fixtures/rails6/app/test/application_system_test_case.rb +0 -5
- data/features/fixtures/rails6/app/test/channels/application_cable/connection_test.rb +0 -11
- data/features/fixtures/rails6/app/test/controllers/.keep +0 -0
- data/features/fixtures/rails6/app/test/fixtures/.keep +0 -0
- data/features/fixtures/rails6/app/test/fixtures/files/.keep +0 -0
- data/features/fixtures/rails6/app/test/helpers/.keep +0 -0
- data/features/fixtures/rails6/app/test/integration/.keep +0 -0
- data/features/fixtures/rails6/app/test/mailers/.keep +0 -0
- data/features/fixtures/rails6/app/test/models/.keep +0 -0
- data/features/fixtures/rails6/app/test/system/.keep +0 -0
- data/features/fixtures/rails6/app/test/test_helper.rb +0 -13
- data/features/fixtures/rails6/app/tmp/.keep +0 -0
- data/features/fixtures/rails6/app/yarn.lock +0 -6082
- data/features/fixtures/resque/.dockerignore +0 -1
- data/features/fixtures/resque/Dockerfile +0 -14
- data/features/fixtures/resque/Gemfile +0 -6
- data/features/fixtures/resque/Rakefile +0 -4
- data/features/fixtures/resque/app.rb +0 -12
- data/features/fixtures/sidekiq/.dockerignore +0 -2
- data/features/fixtures/sidekiq/Dockerfile +0 -17
- data/features/fixtures/sidekiq/app/Gemfile +0 -7
- data/features/fixtures/sidekiq/app/Rakefile.rb +0 -14
- data/features/fixtures/sidekiq/app/app.rb +0 -35
- data/features/fixtures/sidekiq/app/initializers/HandledError.rb +0 -3
- data/features/fixtures/sidekiq/app/initializers/UnhandledError.rb +0 -3
- data/features/fixtures/sidekiq/payloads/handled_metadata_ca_false.json +0 -11
- data/features/fixtures/sidekiq/payloads/handled_metadata_ca_true.json +0 -12
- data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_false.json +0 -11
- data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_true.json +0 -12
- data/features/fixtures/sinatra1/.dockerignore +0 -1
- data/features/fixtures/sinatra1/Dockerfile +0 -13
- data/features/fixtures/sinatra1/Gemfile +0 -4
- data/features/fixtures/sinatra1/app.rb +0 -9
- data/features/fixtures/sinatra2/.dockerignore +0 -1
- data/features/fixtures/sinatra2/Dockerfile +0 -13
- data/features/fixtures/sinatra2/Gemfile +0 -4
- data/features/fixtures/sinatra2/app.rb +0 -9
- data/features/plain_features/add_tab.feature +0 -49
- data/features/plain_features/app_type.feature +0 -8
- data/features/plain_features/app_version.feature +0 -8
- data/features/plain_features/auto_notify.feature +0 -7
- data/features/plain_features/delivery.feature +0 -20
- data/features/plain_features/exception_data.feature +0 -50
- data/features/plain_features/filters.feature +0 -14
- data/features/plain_features/handled_errors.feature +0 -42
- data/features/plain_features/ignore_classes.feature +0 -11
- data/features/plain_features/ignore_report.feature +0 -12
- data/features/plain_features/proxies.feature +0 -25
- data/features/plain_features/release_stages.feature +0 -20
- data/features/plain_features/report_api_key.feature +0 -14
- data/features/plain_features/report_severity.feature +0 -15
- data/features/plain_features/report_stack_frames.feature +0 -49
- data/features/plain_features/report_user.feature +0 -45
- data/features/plain_features/unhandled_errors.feature +0 -33
- data/features/rails_features/api_key.feature +0 -15
- data/features/rails_features/app_type.feature +0 -24
- data/features/rails_features/app_version.feature +0 -26
- data/features/rails_features/auto_capture_sessions.feature +0 -34
- data/features/rails_features/auto_notify.feature +0 -41
- data/features/rails_features/before_notify.feature +0 -44
- data/features/rails_features/breadcrumbs.feature +0 -43
- data/features/rails_features/handled.feature +0 -42
- data/features/rails_features/ignore_classes.feature +0 -14
- data/features/rails_features/meta_data_filters.feature +0 -14
- data/features/rails_features/mongo_breadcrumbs.feature +0 -26
- data/features/rails_features/project_root.feature +0 -35
- data/features/rails_features/release_stage.feature +0 -27
- data/features/rails_features/send_code.feature +0 -18
- data/features/rails_features/send_environment.feature +0 -13
- data/features/rails_features/unhandled.feature +0 -16
- data/features/rails_features/user_info.feature +0 -52
- data/features/sidekiq.feature +0 -30
- data/features/steps/ruby_notifier_steps.rb +0 -75
- data/features/support/env.rb +0 -23
- data/issue_template.md +0 -48
- data/spec/breadcrumbs/breadcrumb_spec.rb +0 -93
- data/spec/breadcrumbs/validator_spec.rb +0 -201
- data/spec/bugsnag_spec.rb +0 -366
- data/spec/cleaner_spec.rb +0 -158
- data/spec/configuration_spec.rb +0 -441
- data/spec/fixtures/apps/rails-initializer-config/Gemfile +0 -9
- data/spec/fixtures/apps/rails-initializer-config/config.ru +0 -16
- data/spec/fixtures/apps/rails-initializer-config/config/initializers/bugsnag.rb +0 -3
- data/spec/fixtures/apps/rails-invalid-initializer-config/Gemfile +0 -9
- data/spec/fixtures/apps/rails-invalid-initializer-config/config.ru +0 -16
- data/spec/fixtures/apps/rails-invalid-initializer-config/config/initializers/bugsnag.rb +0 -3
- data/spec/fixtures/apps/rails-no-config/Gemfile +0 -9
- data/spec/fixtures/apps/rails-no-config/config.ru +0 -16
- data/spec/fixtures/apps/scripts/Gemfile +0 -3
- data/spec/fixtures/apps/scripts/configure_invalid_key.rb +0 -5
- data/spec/fixtures/apps/scripts/configure_key.rb +0 -5
- data/spec/fixtures/apps/scripts/no_config.rb +0 -3
- data/spec/fixtures/crashes/end_of_file.rb +0 -9
- data/spec/fixtures/crashes/short_file.rb +0 -1
- data/spec/fixtures/crashes/start_of_file.rb +0 -9
- data/spec/fixtures/middleware/internal_info_setter.rb +0 -11
- data/spec/fixtures/middleware/public_info_setter.rb +0 -11
- data/spec/fixtures/tasks/Rakefile +0 -26
- data/spec/helper_spec.rb +0 -162
- data/spec/integration_spec.rb +0 -107
- data/spec/integrations/clearance_user_spec.rb +0 -38
- data/spec/integrations/logger_spec.rb +0 -134
- data/spec/integrations/mailman_spec.rb +0 -83
- data/spec/integrations/mongo_spec.rb +0 -262
- data/spec/integrations/que_spec.rb +0 -94
- data/spec/integrations/rack_spec.rb +0 -230
- data/spec/integrations/rails3_request_spec.rb +0 -67
- data/spec/integrations/rake_spec.rb +0 -71
- data/spec/integrations/resque_spec.rb +0 -99
- data/spec/integrations/shoryuken_spec.rb +0 -70
- data/spec/integrations/sidekiq_spec.rb +0 -137
- data/spec/integrations/warden_user_spec.rb +0 -41
- data/spec/middleware/exception_meta_data_spec.rb +0 -104
- data/spec/middleware_spec.rb +0 -254
- data/spec/middleware_stack_spec.rb +0 -151
- data/spec/report_spec.rb +0 -1282
- data/spec/session_tracker_spec.rb +0 -156
- data/spec/spec_helper.rb +0 -86
- data/spec/stacktrace_spec.rb +0 -129
- data/spec/utility/circular_buffer_spec.rb +0 -98
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7bc3da7c0b78fcf5ccdccee2cc11c2da66b0ed121efd6ee4959c3defa4faf78b
|
|
4
|
+
data.tar.gz: 9ee38d85d5156b4820782f54076f4209c5adf333505f701e9498ed0eafd99a1a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6962b73237abdfed471b6fdb835a0fb57f6360dc86efa4c8bd2049c0c354332a214626a48c700e9e0edf29c6848678883d3cddd9bcc040b42057a6e7d03f2fe5
|
|
7
|
+
data.tar.gz: 5e1a14700a57fc44f3d9ad9cf6f6208fe26a1bc590b92e56a56b5a5352891c7e75dd29c28a01a0edf7e297a23bb0728f5484205119a4476e768306e415db6fde
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,94 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
=========
|
|
3
3
|
|
|
4
|
+
## 6.17.0 (27 August 2020)
|
|
5
|
+
|
|
6
|
+
### Enhancements
|
|
7
|
+
|
|
8
|
+
* Sidekiq now uses `thread_queue` delivery by default
|
|
9
|
+
| [#626](https://github.com/bugsnag/bugsnag-ruby/pull/626)
|
|
10
|
+
|
|
11
|
+
* Rescue now uses `thread_queue` delivery when `at_exit` hooks are enabled
|
|
12
|
+
| [#629](https://github.com/bugsnag/bugsnag-ruby/pull/629)
|
|
13
|
+
|
|
14
|
+
## 6.16.0 (12 August 2020)
|
|
15
|
+
|
|
16
|
+
### Enhancements
|
|
17
|
+
|
|
18
|
+
* Set default Delayed Job error context to job class
|
|
19
|
+
| [#499](https://github.com/bugsnag/bugsnag-ruby/pull/499)
|
|
20
|
+
| [Mike Stewart](https://github.com/mike-stewart)
|
|
21
|
+
|
|
22
|
+
* The `BUGSNAG_RELEASE_STAGE` environment variable can now be used to set the release stage. Previously this was only used in Rails applications
|
|
23
|
+
| [#613](https://github.com/bugsnag/bugsnag-ruby/pull/613)
|
|
24
|
+
|
|
25
|
+
* Add support for runtime versions to Delayed Job, Mailman and Shoryuken integrations
|
|
26
|
+
| [#620](https://github.com/bugsnag/bugsnag-ruby/pull/620)
|
|
27
|
+
|
|
28
|
+
* Reduce the size of the bundled gem
|
|
29
|
+
| [#571](https://github.com/bugsnag/bugsnag-ruby/pull/571)
|
|
30
|
+
| [t-richards](https://github.com/t-richards)
|
|
31
|
+
|
|
32
|
+
* Move serialization of Reports onto the background thread when using the thread_queue delivery method
|
|
33
|
+
| [#623](https://github.com/bugsnag/bugsnag-ruby/pull/623)
|
|
34
|
+
|
|
35
|
+
## Fixes
|
|
36
|
+
|
|
37
|
+
* The `app_type` configuration option should no longer be overwritten by Bugsnag and integrations should set this more consistently
|
|
38
|
+
| [#619](https://github.com/bugsnag/bugsnag-ruby/pull/619)
|
|
39
|
+
|
|
40
|
+
## 6.15.0 (27 July 2020)
|
|
41
|
+
|
|
42
|
+
### Enhancements
|
|
43
|
+
|
|
44
|
+
* Add `on_error` callbacks to replace `before_notify_callbacks`
|
|
45
|
+
| [#608](https://github.com/bugsnag/bugsnag-ruby/pull/608)
|
|
46
|
+
|
|
47
|
+
* Improve performance when extracting code from files in stacktraces
|
|
48
|
+
| [#604](https://github.com/bugsnag/bugsnag-ruby/pull/604)
|
|
49
|
+
|
|
50
|
+
* Reduce memory use when session tracking is disabled
|
|
51
|
+
| [#606](https://github.com/bugsnag/bugsnag-ruby/pull/606)
|
|
52
|
+
|
|
53
|
+
### Deprecated
|
|
54
|
+
|
|
55
|
+
* `before_notify_callbacks` have been deprecated in favour of `on_error` and will be removed in the next major release
|
|
56
|
+
|
|
57
|
+
## 6.14.0 (20 July 2020)
|
|
58
|
+
|
|
59
|
+
### Enhancements
|
|
60
|
+
|
|
61
|
+
* Add configurable `discard_classes` option to allow filtering errors using either a `String` or `Regexp` matched against the error's class name
|
|
62
|
+
| [#597](https://github.com/bugsnag/bugsnag-ruby/pull/597)
|
|
63
|
+
|
|
64
|
+
* The Breadcrumb name limit of 30 characters has been removed
|
|
65
|
+
| [#600](https://github.com/bugsnag/bugsnag-ruby/pull/600)
|
|
66
|
+
|
|
67
|
+
* Improve performance of payload cleaning
|
|
68
|
+
| [#601](https://github.com/bugsnag/bugsnag-ruby/pull/601)
|
|
69
|
+
|
|
70
|
+
* Improve performance when processing stacktraces
|
|
71
|
+
| [#602](https://github.com/bugsnag/bugsnag-ruby/pull/602)
|
|
72
|
+
| [#603](https://github.com/bugsnag/bugsnag-ruby/pull/603)
|
|
73
|
+
|
|
74
|
+
* If a custom object responds to `id` method, show the id and class in error reports
|
|
75
|
+
| [#531](https://github.com/bugsnag/bugsnag-ruby/pull/531)
|
|
76
|
+
| [manojmj92](https://github.com/manojmj92)
|
|
77
|
+
|
|
78
|
+
### Deprecated
|
|
79
|
+
|
|
80
|
+
* The `ignore_classes` configuration option has been deprecated in favour of `discard_classes`. `ignore_classes` will be removed in the next major release
|
|
81
|
+
|
|
82
|
+
## 6.13.1 (11 May 2020)
|
|
83
|
+
|
|
84
|
+
### Fixes
|
|
85
|
+
|
|
86
|
+
* Only call custom diagnostic data methods once
|
|
87
|
+
| [#586](https://github.com/bugsnag/bugsnag-ruby/pull/586)
|
|
88
|
+
| [stoivo](https://github.com/stoivo)
|
|
89
|
+
* Guard against exceptions in to_s when cleaning objects
|
|
90
|
+
| [#591](https://github.com/bugsnag/bugsnag-ruby/pull/591)
|
|
91
|
+
|
|
4
92
|
## 6.13.0 (30 Jan 2020)
|
|
5
93
|
|
|
6
94
|
### Enhancements
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
6.
|
|
1
|
+
6.17.0
|
data/bugsnag.gemspec
CHANGED
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.homepage = "https://github.com/bugsnag/bugsnag-ruby"
|
|
11
11
|
s.licenses = ["MIT"]
|
|
12
12
|
|
|
13
|
-
s.files = `git ls-files`.split("\
|
|
13
|
+
s.files = `git ls-files -z lib bugsnag.gemspec VERSION .yardopts`.split("\x0")
|
|
14
14
|
s.extra_rdoc_files = [
|
|
15
15
|
"LICENSE.txt",
|
|
16
16
|
"README.md",
|
data/lib/bugsnag.rb
CHANGED
|
@@ -33,6 +33,7 @@ require "bugsnag/breadcrumbs/validator"
|
|
|
33
33
|
require "bugsnag/breadcrumbs/breadcrumb"
|
|
34
34
|
require "bugsnag/breadcrumbs/breadcrumbs"
|
|
35
35
|
|
|
36
|
+
# rubocop:todo Metrics/ModuleLength
|
|
36
37
|
module Bugsnag
|
|
37
38
|
LOCK = Mutex.new
|
|
38
39
|
INTEGRATIONS = [:resque, :sidekiq, :mailman, :delayed_job, :shoryuken, :que, :mongo]
|
|
@@ -43,10 +44,19 @@ module Bugsnag
|
|
|
43
44
|
##
|
|
44
45
|
# Configure the Bugsnag notifier application-wide settings.
|
|
45
46
|
#
|
|
46
|
-
# Yields a
|
|
47
|
+
# Yields a {Configuration} object to use to set application settings.
|
|
48
|
+
#
|
|
49
|
+
# @yieldparam configuration [Configuration]
|
|
50
|
+
# @return [void]
|
|
47
51
|
def configure(validate_api_key=true)
|
|
48
52
|
yield(configuration) if block_given?
|
|
49
53
|
|
|
54
|
+
# Create the session tracker if sessions are enabled to avoid the overhead
|
|
55
|
+
# of creating it on the first request. We skip this if we're not validating
|
|
56
|
+
# the API key as we use this internally before the user's configure block
|
|
57
|
+
# has run, so we don't know if sessions are enabled yet.
|
|
58
|
+
session_tracker if validate_api_key && configuration.auto_capture_sessions
|
|
59
|
+
|
|
50
60
|
check_key_valid if validate_api_key
|
|
51
61
|
check_endpoint_setup
|
|
52
62
|
|
|
@@ -63,7 +73,7 @@ module Bugsnag
|
|
|
63
73
|
auto_notify = false
|
|
64
74
|
end
|
|
65
75
|
|
|
66
|
-
return unless
|
|
76
|
+
return unless should_deliver_notification?(exception, auto_notify)
|
|
67
77
|
|
|
68
78
|
exception = NIL_EXCEPTION_DESCRIPTION if exception.nil?
|
|
69
79
|
|
|
@@ -71,6 +81,7 @@ module Bugsnag
|
|
|
71
81
|
|
|
72
82
|
# If this is an auto_notify we yield the block before the any middleware is run
|
|
73
83
|
yield(report) if block_given? && auto_notify
|
|
84
|
+
|
|
74
85
|
if report.ignore?
|
|
75
86
|
configuration.debug("Not notifying #{report.exceptions.last[:errorClass]} due to ignore being signified in auto_notify block")
|
|
76
87
|
return
|
|
@@ -97,6 +108,7 @@ module Bugsnag
|
|
|
97
108
|
# If this is not an auto_notify then the block was provided by the user. This should be the last
|
|
98
109
|
# block that is run as it is the users "most specific" block.
|
|
99
110
|
yield(report) if block_given? && !auto_notify
|
|
111
|
+
|
|
100
112
|
if report.ignore?
|
|
101
113
|
configuration.debug("Not notifying #{report.exceptions.last[:errorClass]} due to ignore being signified in user provided block")
|
|
102
114
|
return
|
|
@@ -111,18 +123,14 @@ module Bugsnag
|
|
|
111
123
|
report.severity_reason = initial_reason
|
|
112
124
|
end
|
|
113
125
|
|
|
114
|
-
|
|
115
|
-
configuration.info("Notifying #{configuration.notify_endpoint} of #{report.exceptions.last[:errorClass]}")
|
|
116
|
-
options = {:headers => report.headers}
|
|
117
|
-
payload = ::JSON.dump(Bugsnag::Helpers.trim_if_needed(report.as_json))
|
|
118
|
-
Bugsnag::Delivery[configuration.delivery_method].deliver(configuration.notify_endpoint, payload, configuration, options)
|
|
119
|
-
report_summary = report.summary
|
|
120
|
-
leave_breadcrumb(report_summary[:error_class], report_summary, Bugsnag::Breadcrumbs::ERROR_BREADCRUMB_TYPE, :auto)
|
|
126
|
+
deliver_notification(report)
|
|
121
127
|
end
|
|
122
128
|
end
|
|
123
129
|
|
|
124
130
|
##
|
|
125
|
-
# Registers an at_exit function to automatically catch errors on exit
|
|
131
|
+
# Registers an at_exit function to automatically catch errors on exit.
|
|
132
|
+
#
|
|
133
|
+
# @return [void]
|
|
126
134
|
def register_at_exit
|
|
127
135
|
return if at_exit_handler_installed?
|
|
128
136
|
@exit_handler_added = true
|
|
@@ -139,14 +147,20 @@ module Bugsnag
|
|
|
139
147
|
end
|
|
140
148
|
|
|
141
149
|
##
|
|
142
|
-
# Checks if an at_exit handler has been added
|
|
150
|
+
# Checks if an at_exit handler has been added.
|
|
151
|
+
#
|
|
152
|
+
# The {Bugsnag#configure} method will add this automatically, but it can be
|
|
153
|
+
# added manually using {Bugsnag#register_at_exit}.
|
|
154
|
+
#
|
|
155
|
+
# @return [Boolean]
|
|
143
156
|
def at_exit_handler_installed?
|
|
144
157
|
@exit_handler_added ||= false
|
|
145
158
|
end
|
|
146
159
|
|
|
147
|
-
# Configuration getters
|
|
148
160
|
##
|
|
149
161
|
# Returns the client's Configuration object, or creates one if not yet created.
|
|
162
|
+
#
|
|
163
|
+
# @return [Configuration]
|
|
150
164
|
def configuration
|
|
151
165
|
@configuration = nil unless defined?(@configuration)
|
|
152
166
|
@configuration || LOCK.synchronize { @configuration ||= Bugsnag::Configuration.new }
|
|
@@ -154,6 +168,8 @@ module Bugsnag
|
|
|
154
168
|
|
|
155
169
|
##
|
|
156
170
|
# Returns the client's SessionTracker object, or creates one if not yet created.
|
|
171
|
+
#
|
|
172
|
+
# @return [SessionTracker]
|
|
157
173
|
def session_tracker
|
|
158
174
|
@session_tracker = nil unless defined?(@session_tracker)
|
|
159
175
|
@session_tracker || LOCK.synchronize { @session_tracker ||= Bugsnag::SessionTracker.new}
|
|
@@ -171,11 +187,16 @@ module Bugsnag
|
|
|
171
187
|
# Allow access to "before notify" callbacks as an array.
|
|
172
188
|
#
|
|
173
189
|
# These callbacks will be called whenever an error notification is being made.
|
|
190
|
+
#
|
|
191
|
+
# @deprecated Use {Bugsnag#add_on_error} instead
|
|
174
192
|
def before_notify_callbacks
|
|
175
193
|
Bugsnag.configuration.request_data[:before_callbacks] ||= []
|
|
176
194
|
end
|
|
177
195
|
|
|
178
|
-
|
|
196
|
+
##
|
|
197
|
+
# Attempts to load all integrations through auto-discovery.
|
|
198
|
+
#
|
|
199
|
+
# @return [void]
|
|
179
200
|
def load_integrations
|
|
180
201
|
require "bugsnag/integrations/railtie" if defined?(Rails::Railtie)
|
|
181
202
|
INTEGRATIONS.each do |integration|
|
|
@@ -186,7 +207,11 @@ module Bugsnag
|
|
|
186
207
|
end
|
|
187
208
|
end
|
|
188
209
|
|
|
189
|
-
|
|
210
|
+
##
|
|
211
|
+
# Load a specific integration.
|
|
212
|
+
#
|
|
213
|
+
# @param integration [Symbol] One of the integrations in {INTEGRATIONS}
|
|
214
|
+
# @return [void]
|
|
190
215
|
def load_integration(integration)
|
|
191
216
|
integration = :railtie if integration == :rails
|
|
192
217
|
if INTEGRATIONS.include?(integration) || integration == :railtie
|
|
@@ -203,6 +228,7 @@ module Bugsnag
|
|
|
203
228
|
# @param meta_data [Hash] String, Numeric, or Boolean meta data to attach
|
|
204
229
|
# @param type [String] the breadcrumb type, from Bugsnag::Breadcrumbs::VALID_BREADCRUMB_TYPES
|
|
205
230
|
# @param auto [Symbol] set to :auto if the breadcrumb is automatically created
|
|
231
|
+
# @return [void]
|
|
206
232
|
def leave_breadcrumb(name, meta_data={}, type=Bugsnag::Breadcrumbs::MANUAL_BREADCRUMB_TYPE, auto=:manual)
|
|
207
233
|
breadcrumb = Bugsnag::Breadcrumbs::Breadcrumb.new(name, type, meta_data, auto)
|
|
208
234
|
validator = Bugsnag::Breadcrumbs::Validator.new(configuration)
|
|
@@ -211,27 +237,67 @@ module Bugsnag
|
|
|
211
237
|
validator.validate(breadcrumb)
|
|
212
238
|
|
|
213
239
|
# Skip if it's already invalid
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
240
|
+
return if breadcrumb.ignore?
|
|
241
|
+
|
|
242
|
+
# Run callbacks
|
|
243
|
+
configuration.before_breadcrumb_callbacks.each do |c|
|
|
244
|
+
c.arity > 0 ? c.call(breadcrumb) : c.call
|
|
245
|
+
break if breadcrumb.ignore?
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# Return early if ignored
|
|
249
|
+
return if breadcrumb.ignore?
|
|
220
250
|
|
|
221
|
-
|
|
222
|
-
|
|
251
|
+
# Validate again in case of callback alteration
|
|
252
|
+
validator.validate(breadcrumb)
|
|
223
253
|
|
|
224
|
-
|
|
225
|
-
|
|
254
|
+
# Add to breadcrumbs buffer if still valid
|
|
255
|
+
configuration.breadcrumbs << breadcrumb unless breadcrumb.ignore?
|
|
256
|
+
end
|
|
226
257
|
|
|
227
|
-
|
|
228
|
-
|
|
258
|
+
##
|
|
259
|
+
# Add the given callback to the list of on_error callbacks
|
|
260
|
+
#
|
|
261
|
+
# The on_error callbacks will be called when an error is captured or reported
|
|
262
|
+
# and are passed a {Bugsnag::Report} object
|
|
263
|
+
#
|
|
264
|
+
# Returning false from an on_error callback will cause the error to be ignored
|
|
265
|
+
# and will prevent any remaining callbacks from being called
|
|
266
|
+
#
|
|
267
|
+
# @param callback [Proc]
|
|
268
|
+
# @return [void]
|
|
269
|
+
def add_on_error(callback)
|
|
270
|
+
configuration.add_on_error(callback)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
##
|
|
274
|
+
# Remove the given callback from the list of on_error callbacks
|
|
275
|
+
#
|
|
276
|
+
# Note that this must be the same Proc instance that was passed to
|
|
277
|
+
# {Bugsnag#add_on_error}, otherwise it will not be removed
|
|
278
|
+
#
|
|
279
|
+
# @param callback [Proc]
|
|
280
|
+
# @return [void]
|
|
281
|
+
def remove_on_error(callback)
|
|
282
|
+
configuration.remove_on_error(callback)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
##
|
|
286
|
+
# Returns the client's Cleaner object, or creates one if not yet created.
|
|
287
|
+
#
|
|
288
|
+
# @api private
|
|
289
|
+
#
|
|
290
|
+
# @return [Cleaner]
|
|
291
|
+
def cleaner
|
|
292
|
+
@cleaner = nil unless defined?(@cleaner)
|
|
293
|
+
@cleaner || LOCK.synchronize do
|
|
294
|
+
@cleaner ||= Bugsnag::Cleaner.new(configuration)
|
|
229
295
|
end
|
|
230
296
|
end
|
|
231
297
|
|
|
232
298
|
private
|
|
233
299
|
|
|
234
|
-
def
|
|
300
|
+
def should_deliver_notification?(exception, auto_notify)
|
|
235
301
|
reason = abort_reason(exception, auto_notify)
|
|
236
302
|
configuration.debug(reason) unless reason.nil?
|
|
237
303
|
reason.nil?
|
|
@@ -249,6 +315,42 @@ module Bugsnag
|
|
|
249
315
|
end
|
|
250
316
|
end
|
|
251
317
|
|
|
318
|
+
##
|
|
319
|
+
# Deliver the notification to Bugsnag
|
|
320
|
+
#
|
|
321
|
+
# @param report [Report]
|
|
322
|
+
# @return void
|
|
323
|
+
def deliver_notification(report)
|
|
324
|
+
configuration.info("Notifying #{configuration.notify_endpoint} of #{report.exceptions.last[:errorClass]}")
|
|
325
|
+
|
|
326
|
+
options = { headers: report.headers }
|
|
327
|
+
|
|
328
|
+
delivery_method = Bugsnag::Delivery[configuration.delivery_method]
|
|
329
|
+
|
|
330
|
+
if delivery_method.respond_to?(:serialize_and_deliver)
|
|
331
|
+
delivery_method.serialize_and_deliver(
|
|
332
|
+
configuration.notify_endpoint,
|
|
333
|
+
proc { report_to_json(report) },
|
|
334
|
+
configuration,
|
|
335
|
+
options
|
|
336
|
+
)
|
|
337
|
+
else
|
|
338
|
+
delivery_method.deliver(
|
|
339
|
+
configuration.notify_endpoint,
|
|
340
|
+
report_to_json(report),
|
|
341
|
+
configuration,
|
|
342
|
+
options
|
|
343
|
+
)
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
leave_breadcrumb(
|
|
347
|
+
report.summary[:error_class],
|
|
348
|
+
report.summary,
|
|
349
|
+
Bugsnag::Breadcrumbs::ERROR_BREADCRUMB_TYPE,
|
|
350
|
+
:auto
|
|
351
|
+
)
|
|
352
|
+
end
|
|
353
|
+
|
|
252
354
|
# Check if the API key is valid and warn (once) if it is not
|
|
253
355
|
def check_key_valid
|
|
254
356
|
@key_warning = false unless defined?(@key_warning)
|
|
@@ -273,7 +375,23 @@ module Bugsnag
|
|
|
273
375
|
raise ArgumentError, "The session endpoint cannot be modified without the notify endpoint"
|
|
274
376
|
end
|
|
275
377
|
end
|
|
378
|
+
|
|
379
|
+
##
|
|
380
|
+
# Convert the Report object to JSON
|
|
381
|
+
#
|
|
382
|
+
# We ensure the report is safe to send by removing recursion, fixing
|
|
383
|
+
# encoding errors and redacting metadata according to "meta_data_filters"
|
|
384
|
+
#
|
|
385
|
+
# @param report [Report]
|
|
386
|
+
# @return [String]
|
|
387
|
+
def report_to_json(report)
|
|
388
|
+
cleaned = cleaner.clean_object(report.as_json)
|
|
389
|
+
trimmed = Bugsnag::Helpers.trim_if_needed(cleaned)
|
|
390
|
+
|
|
391
|
+
::JSON.dump(trimmed)
|
|
392
|
+
end
|
|
276
393
|
end
|
|
277
394
|
end
|
|
395
|
+
# rubocop:enable Metrics/ModuleLength
|
|
278
396
|
|
|
279
397
|
Bugsnag.load_integrations unless ENV["BUGSNAG_DISABLE_AUTOCONFIGURE"]
|
|
@@ -15,12 +15,6 @@ module Bugsnag::Breadcrumbs
|
|
|
15
15
|
#
|
|
16
16
|
# @param breadcrumb [Bugsnag::Breadcrumbs::Breadcrumb] the breadcrumb to be validated
|
|
17
17
|
def validate(breadcrumb)
|
|
18
|
-
# Check name length
|
|
19
|
-
if breadcrumb.name.size > Bugsnag::Breadcrumbs::MAX_NAME_LENGTH
|
|
20
|
-
@configuration.debug("Breadcrumb name trimmed to length #{Bugsnag::Breadcrumbs::MAX_NAME_LENGTH}. Original name: #{breadcrumb.name}")
|
|
21
|
-
breadcrumb.name = breadcrumb.name.slice(0...Bugsnag::Breadcrumbs::MAX_NAME_LENGTH)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
18
|
# Check meta_data hash doesn't contain complex values
|
|
25
19
|
breadcrumb.meta_data = breadcrumb.meta_data.select do |k, v|
|
|
26
20
|
if valid_meta_data_type?(v)
|
data/lib/bugsnag/cleaner.rb
CHANGED
|
@@ -1,19 +1,76 @@
|
|
|
1
1
|
require 'uri'
|
|
2
2
|
|
|
3
3
|
module Bugsnag
|
|
4
|
+
# @api private
|
|
4
5
|
class Cleaner
|
|
5
6
|
FILTERED = '[FILTERED]'.freeze
|
|
6
7
|
RECURSION = '[RECURSION]'.freeze
|
|
7
8
|
OBJECT = '[OBJECT]'.freeze
|
|
8
9
|
RAISED = '[RAISED]'.freeze
|
|
10
|
+
OBJECT_WITH_ID_AND_CLASS = '[OBJECT]: [Class]: %<class_name>s [ID]: %<id>d'.freeze
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
##
|
|
13
|
+
# @param configuration [Configuration]
|
|
14
|
+
def initialize(configuration)
|
|
15
|
+
@configuration = configuration
|
|
13
16
|
end
|
|
14
17
|
|
|
15
|
-
def clean_object(
|
|
16
|
-
|
|
18
|
+
def clean_object(object)
|
|
19
|
+
@deep_filters = deep_filters?
|
|
20
|
+
|
|
21
|
+
traverse_object(object, {}, nil)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
##
|
|
25
|
+
# @param url [String]
|
|
26
|
+
# @return [String]
|
|
27
|
+
def clean_url(url)
|
|
28
|
+
return url if @configuration.meta_data_filters.empty?
|
|
29
|
+
|
|
30
|
+
uri = URI(url)
|
|
31
|
+
return url unless uri.query
|
|
32
|
+
|
|
33
|
+
query_params = uri.query.split('&').map { |pair| pair.split('=') }
|
|
34
|
+
query_params.map! do |key, val|
|
|
35
|
+
if filters_match?(key)
|
|
36
|
+
"#{key}=#{FILTERED}"
|
|
37
|
+
else
|
|
38
|
+
"#{key}=#{val}"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
uri.query = query_params.join('&')
|
|
43
|
+
uri.to_s
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
##
|
|
49
|
+
# This method calculates whether we need to filter deeply or not; i.e. whether
|
|
50
|
+
# we should match both with and without 'request.params'
|
|
51
|
+
#
|
|
52
|
+
# This is cached on the instance variable '@deep_filters' for performance
|
|
53
|
+
# reasons
|
|
54
|
+
#
|
|
55
|
+
# @return [Boolean]
|
|
56
|
+
def deep_filters?
|
|
57
|
+
@configuration.meta_data_filters.any? do |filter|
|
|
58
|
+
filter.is_a?(Regexp) && filter.to_s.include?("\\.".freeze)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def clean_string(str)
|
|
63
|
+
if defined?(str.encoding) && defined?(Encoding::UTF_8)
|
|
64
|
+
if str.encoding == Encoding::UTF_8
|
|
65
|
+
str.valid_encoding? ? str : str.encode('utf-16', invalid: :replace, undef: :replace).encode('utf-8')
|
|
66
|
+
else
|
|
67
|
+
str.encode('utf-8', invalid: :replace, undef: :replace)
|
|
68
|
+
end
|
|
69
|
+
elsif defined?(Iconv)
|
|
70
|
+
Iconv.conv('UTF-8//IGNORE', 'UTF-8', str) || str
|
|
71
|
+
else
|
|
72
|
+
str
|
|
73
|
+
end
|
|
17
74
|
end
|
|
18
75
|
|
|
19
76
|
def traverse_object(obj, seen, scope)
|
|
@@ -28,11 +85,22 @@ module Bugsnag
|
|
|
28
85
|
value = case obj
|
|
29
86
|
when Hash
|
|
30
87
|
clean_hash = {}
|
|
31
|
-
obj.each do |k,v|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
88
|
+
obj.each do |k, v|
|
|
89
|
+
begin
|
|
90
|
+
current_scope = [scope, k].compact.join('.')
|
|
91
|
+
|
|
92
|
+
if filters_match_deeply?(k, current_scope)
|
|
93
|
+
clean_hash[k] = FILTERED
|
|
94
|
+
else
|
|
95
|
+
clean_hash[k] = traverse_object(v, seen, current_scope)
|
|
96
|
+
end
|
|
97
|
+
# If we get an error here, we assume the key needs to be filtered
|
|
98
|
+
# to avoid leaking things we shouldn't. We also remove the key itself
|
|
99
|
+
# because it may cause issues later e.g. when being converted to JSON
|
|
100
|
+
rescue StandardError
|
|
101
|
+
clean_hash[RAISED] = FILTERED
|
|
102
|
+
rescue SystemStackError
|
|
103
|
+
clean_hash[RECURSION] = FILTERED
|
|
36
104
|
end
|
|
37
105
|
end
|
|
38
106
|
clean_hash
|
|
@@ -43,10 +111,23 @@ module Bugsnag
|
|
|
43
111
|
when String
|
|
44
112
|
clean_string(obj)
|
|
45
113
|
else
|
|
46
|
-
|
|
114
|
+
# guard against objects that raise or blow the stack when stringified
|
|
115
|
+
begin
|
|
116
|
+
str = obj.to_s
|
|
117
|
+
rescue StandardError
|
|
118
|
+
str = RAISED
|
|
119
|
+
rescue SystemStackError
|
|
120
|
+
str = RECURSION
|
|
121
|
+
end
|
|
122
|
+
|
|
47
123
|
# avoid leaking potentially sensitive data from objects' #inspect output
|
|
48
124
|
if str =~ /#<.*>/
|
|
49
|
-
|
|
125
|
+
# Use id of the object if available
|
|
126
|
+
if obj.respond_to?(:id)
|
|
127
|
+
format(OBJECT_WITH_ID_AND_CLASS, class_name: obj.class, id: obj.id)
|
|
128
|
+
else
|
|
129
|
+
OBJECT
|
|
130
|
+
end
|
|
50
131
|
else
|
|
51
132
|
clean_string(str)
|
|
52
133
|
end
|
|
@@ -56,67 +137,56 @@ module Bugsnag
|
|
|
56
137
|
value
|
|
57
138
|
end
|
|
58
139
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
140
|
+
##
|
|
141
|
+
# @param key [String, #to_s]
|
|
142
|
+
# @return [Boolean]
|
|
143
|
+
def filters_match?(key)
|
|
144
|
+
str = key.to_s
|
|
145
|
+
|
|
146
|
+
@configuration.meta_data_filters.any? do |filter|
|
|
147
|
+
case filter
|
|
148
|
+
when Regexp
|
|
149
|
+
str.match(filter)
|
|
63
150
|
else
|
|
64
|
-
str.
|
|
151
|
+
str.include?(filter.to_s)
|
|
65
152
|
end
|
|
66
|
-
elsif defined?(Iconv)
|
|
67
|
-
Iconv.conv('UTF-8//IGNORE', 'UTF-8', str) || str
|
|
68
|
-
else
|
|
69
|
-
str
|
|
70
153
|
end
|
|
71
154
|
end
|
|
72
155
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
156
|
+
##
|
|
157
|
+
# If someone has a Rails filter like /^stuff\.secret/, it won't match
|
|
158
|
+
# "request.params.stuff.secret", so we try it both with and without the
|
|
159
|
+
# "request.params." bit.
|
|
160
|
+
#
|
|
161
|
+
# @param key [String, #to_s]
|
|
162
|
+
# @param scope [String]
|
|
163
|
+
# @return [Boolean]
|
|
164
|
+
def filters_match_deeply?(key, scope)
|
|
165
|
+
return false unless scope_should_be_filtered?(scope)
|
|
76
166
|
|
|
77
|
-
|
|
78
|
-
return
|
|
167
|
+
return true if filters_match?(key)
|
|
168
|
+
return false unless @deep_filters
|
|
79
169
|
|
|
80
|
-
|
|
81
|
-
return url unless uri.query
|
|
170
|
+
return true if filters_match?(scope)
|
|
82
171
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"#{key}=#{FILTERED}"
|
|
172
|
+
@configuration.scopes_to_filter.any? do |scope_to_filter|
|
|
173
|
+
if scope.start_with?("#{scope_to_filter}.request.params.")
|
|
174
|
+
filters_match?(scope.sub("#{scope_to_filter}.request.params.", ''))
|
|
87
175
|
else
|
|
88
|
-
"#{
|
|
176
|
+
filters_match?(scope.sub("#{scope_to_filter}.", ''))
|
|
89
177
|
end
|
|
90
178
|
end
|
|
91
|
-
|
|
92
|
-
uri.query = query_params.join('&')
|
|
93
|
-
uri.to_s
|
|
94
179
|
end
|
|
95
180
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
str.match(f)
|
|
105
|
-
else
|
|
106
|
-
str.include?(f.to_s)
|
|
107
|
-
end
|
|
181
|
+
##
|
|
182
|
+
# Should the given scope be filtered?
|
|
183
|
+
#
|
|
184
|
+
# @param scope [String]
|
|
185
|
+
# @return [Boolean]
|
|
186
|
+
def scope_should_be_filtered?(scope)
|
|
187
|
+
@configuration.scopes_to_filter.any? do |scope_to_filter|
|
|
188
|
+
scope.start_with?("#{scope_to_filter}.")
|
|
108
189
|
end
|
|
109
190
|
end
|
|
110
|
-
|
|
111
|
-
# If someone has a Rails filter like /^stuff\.secret/, it won't match "request.params.stuff.secret",
|
|
112
|
-
# so we try it both with and without the "request.params." bit.
|
|
113
|
-
def filters_match_deeply?(key, scope)
|
|
114
|
-
return true if filters_match?(key)
|
|
115
|
-
return false unless @deep_filters
|
|
116
|
-
|
|
117
|
-
long = [scope, key].compact.join('.')
|
|
118
|
-
short = long.sub(/^request\.params\./, '')
|
|
119
|
-
filters_match?(long) || filters_match?(short)
|
|
120
|
-
end
|
|
121
191
|
end
|
|
122
192
|
end
|