bugsnag 6.15.0 → 6.27.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (683) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +12 -0
  3. data/CHANGELOG.md +289 -0
  4. data/README.md +1 -2
  5. data/VERSION +1 -1
  6. data/bugsnag.gemspec +19 -2
  7. data/lib/bugsnag/breadcrumb_type.rb +14 -0
  8. data/lib/bugsnag/breadcrumbs/breadcrumb.rb +35 -2
  9. data/lib/bugsnag/breadcrumbs/breadcrumbs.rb +1 -0
  10. data/lib/bugsnag/breadcrumbs/on_breadcrumb_callback_list.rb +48 -0
  11. data/lib/bugsnag/breadcrumbs/validator.rb +0 -24
  12. data/lib/bugsnag/cleaner.rb +70 -29
  13. data/lib/bugsnag/configuration.rb +445 -47
  14. data/lib/bugsnag/delivery/synchronous.rb +3 -4
  15. data/lib/bugsnag/delivery/thread_queue.rb +18 -5
  16. data/lib/bugsnag/endpoint_configuration.rb +11 -0
  17. data/lib/bugsnag/endpoint_validator.rb +80 -0
  18. data/lib/bugsnag/error.rb +25 -0
  19. data/lib/bugsnag/event.rb +5 -0
  20. data/lib/bugsnag/feature_flag.rb +74 -0
  21. data/lib/bugsnag/helpers.rb +17 -9
  22. data/lib/bugsnag/integrations/delayed_job.rb +13 -1
  23. data/lib/bugsnag/integrations/mailman.rb +2 -1
  24. data/lib/bugsnag/integrations/mongo.rb +5 -4
  25. data/lib/bugsnag/integrations/que.rb +2 -1
  26. data/lib/bugsnag/integrations/rack.rb +6 -4
  27. data/lib/bugsnag/integrations/rails/active_job.rb +100 -0
  28. data/lib/bugsnag/integrations/rails/rails_breadcrumbs.rb +2 -2
  29. data/lib/bugsnag/integrations/railtie.rb +93 -35
  30. data/lib/bugsnag/integrations/rake.rb +8 -3
  31. data/lib/bugsnag/integrations/resque.rb +30 -9
  32. data/lib/bugsnag/integrations/shoryuken.rb +2 -1
  33. data/lib/bugsnag/integrations/sidekiq.rb +3 -3
  34. data/lib/bugsnag/middleware/active_job.rb +18 -0
  35. data/lib/bugsnag/middleware/classify_error.rb +1 -0
  36. data/lib/bugsnag/middleware/delayed_job.rb +21 -1
  37. data/lib/bugsnag/middleware/exception_meta_data.rb +2 -0
  38. data/lib/bugsnag/middleware/rack_request.rb +103 -20
  39. data/lib/bugsnag/middleware/rails3_request.rb +2 -2
  40. data/lib/bugsnag/middleware/rake.rb +1 -1
  41. data/lib/bugsnag/middleware/session_data.rb +3 -1
  42. data/lib/bugsnag/middleware/sidekiq.rb +1 -1
  43. data/lib/bugsnag/middleware/suggestion_data.rb +9 -7
  44. data/lib/bugsnag/middleware/warden_user.rb +3 -0
  45. data/lib/bugsnag/middleware_stack.rb +6 -6
  46. data/lib/bugsnag/report.rb +292 -8
  47. data/lib/bugsnag/session_tracker.rb +52 -12
  48. data/lib/bugsnag/stacktrace.rb +14 -3
  49. data/lib/bugsnag/tasks/bugsnag.rake +1 -1
  50. data/lib/bugsnag/utility/duplicator.rb +124 -0
  51. data/lib/bugsnag/utility/feature_data_store.rb +41 -0
  52. data/lib/bugsnag/utility/feature_flag_delegate.rb +89 -0
  53. data/lib/bugsnag/utility/metadata_delegate.rb +102 -0
  54. data/lib/bugsnag.rb +256 -37
  55. metadata +25 -635
  56. data/.buildkite/pipeline.yml +0 -470
  57. data/.github/PULL_REQUEST_TEMPLATE.md +0 -84
  58. data/.gitignore +0 -55
  59. data/.rdoc_options +0 -27
  60. data/.rspec +0 -3
  61. data/.rubocop.yml +0 -57
  62. data/.rubocop_todo.yml +0 -1049
  63. data/CONTRIBUTING.md +0 -64
  64. data/Gemfile +0 -50
  65. data/Rakefile +0 -37
  66. data/TESTING.md +0 -81
  67. data/UPGRADING.md +0 -91
  68. data/docker-compose.yml +0 -46
  69. data/dockerfiles/Dockerfile.jruby-unit-tests +0 -13
  70. data/dockerfiles/Dockerfile.ruby-maze-runner +0 -26
  71. data/dockerfiles/Dockerfile.ruby-unit-tests +0 -12
  72. data/features/.gitignore +0 -1
  73. data/features/delayed_job.feature +0 -36
  74. data/features/fixtures/delayed_job/Dockerfile +0 -15
  75. data/features/fixtures/delayed_job/app/.gitignore +0 -21
  76. data/features/fixtures/delayed_job/app/Gemfile +0 -57
  77. data/features/fixtures/delayed_job/app/README.md +0 -24
  78. data/features/fixtures/delayed_job/app/Rakefile +0 -24
  79. data/features/fixtures/delayed_job/app/app/assets/config/manifest.js +0 -3
  80. data/features/fixtures/delayed_job/app/app/assets/images/.keep +0 -0
  81. data/features/fixtures/delayed_job/app/app/assets/javascripts/application.js +0 -16
  82. data/features/fixtures/delayed_job/app/app/assets/javascripts/cable.js +0 -13
  83. data/features/fixtures/delayed_job/app/app/assets/javascripts/channels/.keep +0 -0
  84. data/features/fixtures/delayed_job/app/app/assets/stylesheets/application.css +0 -15
  85. data/features/fixtures/delayed_job/app/app/channels/application_cable/channel.rb +0 -4
  86. data/features/fixtures/delayed_job/app/app/channels/application_cable/connection.rb +0 -4
  87. data/features/fixtures/delayed_job/app/app/controllers/application_controller.rb +0 -3
  88. data/features/fixtures/delayed_job/app/app/controllers/concerns/.keep +0 -0
  89. data/features/fixtures/delayed_job/app/app/helpers/application_helper.rb +0 -2
  90. data/features/fixtures/delayed_job/app/app/jobs/application_job.rb +0 -2
  91. data/features/fixtures/delayed_job/app/app/mailers/application_mailer.rb +0 -4
  92. data/features/fixtures/delayed_job/app/app/models/application_record.rb +0 -3
  93. data/features/fixtures/delayed_job/app/app/models/concerns/.keep +0 -0
  94. data/features/fixtures/delayed_job/app/app/models/test_model.rb +0 -10
  95. data/features/fixtures/delayed_job/app/app/views/layouts/application.html.erb +0 -14
  96. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.html.erb +0 -13
  97. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.text.erb +0 -1
  98. data/features/fixtures/delayed_job/app/config/application.rb +0 -15
  99. data/features/fixtures/delayed_job/app/config/boot.rb +0 -3
  100. data/features/fixtures/delayed_job/app/config/cable.yml +0 -9
  101. data/features/fixtures/delayed_job/app/config/database.yml +0 -25
  102. data/features/fixtures/delayed_job/app/config/environment.rb +0 -5
  103. data/features/fixtures/delayed_job/app/config/environments/development.rb +0 -54
  104. data/features/fixtures/delayed_job/app/config/environments/production.rb +0 -86
  105. data/features/fixtures/delayed_job/app/config/environments/test.rb +0 -42
  106. data/features/fixtures/delayed_job/app/config/initializers/application_controller_renderer.rb +0 -8
  107. data/features/fixtures/delayed_job/app/config/initializers/assets.rb +0 -11
  108. data/features/fixtures/delayed_job/app/config/initializers/backtrace_silencers.rb +0 -7
  109. data/features/fixtures/delayed_job/app/config/initializers/bugsnag.rb +0 -14
  110. data/features/fixtures/delayed_job/app/config/initializers/cookies_serializer.rb +0 -5
  111. data/features/fixtures/delayed_job/app/config/initializers/delayed_job.rb +0 -3
  112. data/features/fixtures/delayed_job/app/config/initializers/filter_parameter_logging.rb +0 -4
  113. data/features/fixtures/delayed_job/app/config/initializers/inflections.rb +0 -16
  114. data/features/fixtures/delayed_job/app/config/initializers/mime_types.rb +0 -4
  115. data/features/fixtures/delayed_job/app/config/initializers/new_framework_defaults.rb +0 -26
  116. data/features/fixtures/delayed_job/app/config/initializers/session_store.rb +0 -3
  117. data/features/fixtures/delayed_job/app/config/initializers/wrap_parameters.rb +0 -14
  118. data/features/fixtures/delayed_job/app/config/locales/en.yml +0 -23
  119. data/features/fixtures/delayed_job/app/config/puma.rb +0 -47
  120. data/features/fixtures/delayed_job/app/config/routes.rb +0 -3
  121. data/features/fixtures/delayed_job/app/config/secrets.yml +0 -22
  122. data/features/fixtures/delayed_job/app/config/spring.rb +0 -6
  123. data/features/fixtures/delayed_job/app/config.ru +0 -5
  124. data/features/fixtures/delayed_job/app/db/migrate/20181024232549_create_delayed_jobs.rb +0 -22
  125. data/features/fixtures/delayed_job/app/db/migrate/20181024232817_create_test_models.rb +0 -8
  126. data/features/fixtures/delayed_job/app/db/schema.rb +0 -30
  127. data/features/fixtures/delayed_job/app/db/seeds.rb +0 -7
  128. data/features/fixtures/delayed_job/app/lib/assets/.keep +0 -0
  129. data/features/fixtures/delayed_job/app/lib/tasks/.keep +0 -0
  130. data/features/fixtures/delayed_job/app/log/.keep +0 -0
  131. data/features/fixtures/delayed_job/app/public/404.html +0 -67
  132. data/features/fixtures/delayed_job/app/public/422.html +0 -67
  133. data/features/fixtures/delayed_job/app/public/500.html +0 -66
  134. data/features/fixtures/delayed_job/app/public/apple-touch-icon-precomposed.png +0 -0
  135. data/features/fixtures/delayed_job/app/public/apple-touch-icon.png +0 -0
  136. data/features/fixtures/delayed_job/app/public/favicon.ico +0 -0
  137. data/features/fixtures/delayed_job/app/public/robots.txt +0 -5
  138. data/features/fixtures/delayed_job/app/test/controllers/.keep +0 -0
  139. data/features/fixtures/delayed_job/app/test/fixtures/.keep +0 -0
  140. data/features/fixtures/delayed_job/app/test/fixtures/files/.keep +0 -0
  141. data/features/fixtures/delayed_job/app/test/fixtures/test_models.yml +0 -11
  142. data/features/fixtures/delayed_job/app/test/helpers/.keep +0 -0
  143. data/features/fixtures/delayed_job/app/test/integration/.keep +0 -0
  144. data/features/fixtures/delayed_job/app/test/mailers/.keep +0 -0
  145. data/features/fixtures/delayed_job/app/test/models/.keep +0 -0
  146. data/features/fixtures/delayed_job/app/test/models/test_model_test.rb +0 -7
  147. data/features/fixtures/delayed_job/app/test/test_helper.rb +0 -10
  148. data/features/fixtures/delayed_job/app/tmp/.keep +0 -0
  149. data/features/fixtures/docker-compose.yml +0 -303
  150. data/features/fixtures/expected_breadcrumbs/active_job.json +0 -9
  151. data/features/fixtures/expected_breadcrumbs/mongo_failed.json +0 -15
  152. data/features/fixtures/expected_breadcrumbs/mongo_filtered_request.json +0 -15
  153. data/features/fixtures/expected_breadcrumbs/mongo_filtered_result.json +0 -15
  154. data/features/fixtures/expected_breadcrumbs/mongo_success.json +0 -14
  155. data/features/fixtures/expected_breadcrumbs/request.json +0 -13
  156. data/features/fixtures/expected_breadcrumbs/sql_with_bindings.json +0 -12
  157. data/features/fixtures/expected_breadcrumbs/sql_without_bindings.json +0 -11
  158. data/features/fixtures/plain/.dockerignore +0 -2
  159. data/features/fixtures/plain/Dockerfile +0 -11
  160. data/features/fixtures/plain/app/Gemfile +0 -3
  161. data/features/fixtures/plain/app/app.rb +0 -38
  162. data/features/fixtures/plain/app/configuration/api_key.rb +0 -9
  163. data/features/fixtures/plain/app/configuration/proxy.rb +0 -14
  164. data/features/fixtures/plain/app/configuration/send_handled.rb +0 -7
  165. data/features/fixtures/plain/app/configuration/send_unhandled.rb +0 -9
  166. data/features/fixtures/plain/app/delivery/fork_threadpool.rb +0 -27
  167. data/features/fixtures/plain/app/delivery/synchronous.rb +0 -14
  168. data/features/fixtures/plain/app/delivery/threadpool.rb +0 -14
  169. data/features/fixtures/plain/app/exception_data/crash.rb +0 -34
  170. data/features/fixtures/plain/app/exception_data/handled_context.rb +0 -10
  171. data/features/fixtures/plain/app/exception_data/handled_hash.rb +0 -10
  172. data/features/fixtures/plain/app/exception_data/handled_meta_data.rb +0 -10
  173. data/features/fixtures/plain/app/exception_data/handled_user_id.rb +0 -10
  174. data/features/fixtures/plain/app/exception_data/unhandled_context.rb +0 -7
  175. data/features/fixtures/plain/app/exception_data/unhandled_hash.rb +0 -7
  176. data/features/fixtures/plain/app/exception_data/unhandled_meta_data.rb +0 -7
  177. data/features/fixtures/plain/app/exception_data/unhandled_user_id.rb +0 -7
  178. data/features/fixtures/plain/app/filters/additional_filters.rb +0 -11
  179. data/features/fixtures/plain/app/filters/default_filters.rb +0 -15
  180. data/features/fixtures/plain/app/handled/block_metadata.rb +0 -15
  181. data/features/fixtures/plain/app/handled/ignore_exception.rb +0 -12
  182. data/features/fixtures/plain/app/handled/notify_exception.rb +0 -9
  183. data/features/fixtures/plain/app/handled/notify_string.rb +0 -9
  184. data/features/fixtures/plain/app/ignore_classes/handled.rb +0 -8
  185. data/features/fixtures/plain/app/ignore_classes/ignore_error.rb +0 -8
  186. data/features/fixtures/plain/app/ignore_classes/unhandled.rb +0 -4
  187. data/features/fixtures/plain/app/report_modification/add_tab.rb +0 -16
  188. data/features/fixtures/plain/app/report_modification/add_tab_existing.rb +0 -22
  189. data/features/fixtures/plain/app/report_modification/add_tab_override.rb +0 -19
  190. data/features/fixtures/plain/app/report_modification/ignore_report.rb +0 -9
  191. data/features/fixtures/plain/app/report_modification/initiators/handled_before_notify.rb +0 -10
  192. data/features/fixtures/plain/app/report_modification/initiators/handled_block.rb +0 -8
  193. data/features/fixtures/plain/app/report_modification/initiators/handled_on_error.rb +0 -10
  194. data/features/fixtures/plain/app/report_modification/initiators/unhandled_before_notify.rb +0 -11
  195. data/features/fixtures/plain/app/report_modification/initiators/unhandled_on_error.rb +0 -11
  196. data/features/fixtures/plain/app/report_modification/modify_api_key.rb +0 -9
  197. data/features/fixtures/plain/app/report_modification/modify_severity.rb +0 -9
  198. data/features/fixtures/plain/app/report_modification/remove_user_details.rb +0 -14
  199. data/features/fixtures/plain/app/report_modification/set_custom_user_details.rb +0 -16
  200. data/features/fixtures/plain/app/report_modification/set_user_details.rb +0 -13
  201. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_before_notify.rb +0 -29
  202. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_block.rb +0 -24
  203. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_on_error.rb +0 -29
  204. data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_before_notify.rb +0 -26
  205. data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_on_error.rb +0 -26
  206. data/features/fixtures/plain/app/stack_frame_modification/mark_frames_in_project.rb +0 -13
  207. data/features/fixtures/plain/app/stack_frame_modification/remove_stack_frame.rb +0 -9
  208. data/features/fixtures/plain/app/unhandled/bad_syntax.rb +0 -1
  209. data/features/fixtures/plain/app/unhandled/custom_error.rb +0 -9
  210. data/features/fixtures/plain/app/unhandled/interrupt.rb +0 -6
  211. data/features/fixtures/plain/app/unhandled/load_error.rb +0 -6
  212. data/features/fixtures/plain/app/unhandled/local_jump_error.rb +0 -10
  213. data/features/fixtures/plain/app/unhandled/name_error.rb +0 -6
  214. data/features/fixtures/plain/app/unhandled/no_method_error.rb +0 -6
  215. data/features/fixtures/plain/app/unhandled/runtime_error.rb +0 -6
  216. data/features/fixtures/plain/app/unhandled/syntax_error.rb +0 -6
  217. data/features/fixtures/plain/app/unhandled/system_call_error.rb +0 -6
  218. data/features/fixtures/plain/app/unhandled/system_exit.rb +0 -6
  219. data/features/fixtures/plain/json/delivery_fork.json +0 -4
  220. data/features/fixtures/plain/json/delivery_synchronous.json +0 -4
  221. data/features/fixtures/plain/json/delivery_threadpool.json +0 -4
  222. data/features/fixtures/plain/json/filters_default_metadata_filters.json +0 -9
  223. data/features/fixtures/rack1/.dockerignore +0 -1
  224. data/features/fixtures/rack1/Dockerfile +0 -13
  225. data/features/fixtures/rack1/Gemfile +0 -4
  226. data/features/fixtures/rack1/app.rb +0 -8
  227. data/features/fixtures/rack2/.dockerignore +0 -1
  228. data/features/fixtures/rack2/Dockerfile +0 -13
  229. data/features/fixtures/rack2/Gemfile +0 -4
  230. data/features/fixtures/rack2/app.rb +0 -8
  231. data/features/fixtures/rails3/.dockerignore +0 -1
  232. data/features/fixtures/rails3/Dockerfile +0 -15
  233. data/features/fixtures/rails3/app/.gitignore +0 -15
  234. data/features/fixtures/rails3/app/Gemfile +0 -17
  235. data/features/fixtures/rails3/app/Rakefile +0 -7
  236. data/features/fixtures/rails3/app/app/assets/images/rails.png +0 -0
  237. data/features/fixtures/rails3/app/app/assets/javascripts/application.js +0 -15
  238. data/features/fixtures/rails3/app/app/assets/stylesheets/application.css +0 -13
  239. data/features/fixtures/rails3/app/app/controllers/api_key_controller.rb +0 -20
  240. data/features/fixtures/rails3/app/app/controllers/app_type_controller.rb +0 -20
  241. data/features/fixtures/rails3/app/app/controllers/app_version_controller.rb +0 -25
  242. data/features/fixtures/rails3/app/app/controllers/application_controller.rb +0 -7
  243. data/features/fixtures/rails3/app/app/controllers/auto_notify_controller.rb +0 -31
  244. data/features/fixtures/rails3/app/app/controllers/before_notify_controller.rb +0 -44
  245. data/features/fixtures/rails3/app/app/controllers/breadcrumbs_controller.rb +0 -19
  246. data/features/fixtures/rails3/app/app/controllers/handled_controller.rb +0 -26
  247. data/features/fixtures/rails3/app/app/controllers/ignore_classes_controller.rb +0 -23
  248. data/features/fixtures/rails3/app/app/controllers/metadata_filters_controller.rb +0 -16
  249. data/features/fixtures/rails3/app/app/controllers/project_root_controller.rb +0 -25
  250. data/features/fixtures/rails3/app/app/controllers/release_stage_controller.rb +0 -20
  251. data/features/fixtures/rails3/app/app/controllers/send_code_controller.rb +0 -20
  252. data/features/fixtures/rails3/app/app/controllers/send_environment_controller.rb +0 -12
  253. data/features/fixtures/rails3/app/app/controllers/session_tracking_controller.rb +0 -24
  254. data/features/fixtures/rails3/app/app/controllers/unhandled_controller.rb +0 -11
  255. data/features/fixtures/rails3/app/app/controllers/warden_controller.rb +0 -30
  256. data/features/fixtures/rails3/app/app/helpers/application_helper.rb +0 -2
  257. data/features/fixtures/rails3/app/app/mailers/.gitkeep +0 -0
  258. data/features/fixtures/rails3/app/app/models/.gitkeep +0 -0
  259. data/features/fixtures/rails3/app/app/models/user.rb +0 -6
  260. data/features/fixtures/rails3/app/app/views/layouts/application.html.erb +0 -14
  261. data/features/fixtures/rails3/app/config/application.rb +0 -67
  262. data/features/fixtures/rails3/app/config/boot.rb +0 -6
  263. data/features/fixtures/rails3/app/config/database.yml +0 -31
  264. data/features/fixtures/rails3/app/config/environment.rb +0 -5
  265. data/features/fixtures/rails3/app/config/environments/development.rb +0 -37
  266. data/features/fixtures/rails3/app/config/environments/production.rb +0 -67
  267. data/features/fixtures/rails3/app/config/environments/rails_env.rb +0 -37
  268. data/features/fixtures/rails3/app/config/initializers/bugsnag.rb +0 -29
  269. data/features/fixtures/rails3/app/config/initializers/secret_token.rb +0 -7
  270. data/features/fixtures/rails3/app/config/initializers/session_store.rb +0 -8
  271. data/features/fixtures/rails3/app/config/initializers/warden.rb +0 -3
  272. data/features/fixtures/rails3/app/config/initializers/wrap_parameters.rb +0 -14
  273. data/features/fixtures/rails3/app/config/locales/en.yml +0 -5
  274. data/features/fixtures/rails3/app/config/routes.rb +0 -19
  275. data/features/fixtures/rails3/app/config.ru +0 -4
  276. data/features/fixtures/rails3/app/db/migrate/20180423142727_create_users.rb +0 -45
  277. data/features/fixtures/rails3/app/db/schema.rb +0 -37
  278. data/features/fixtures/rails3/app/db/seeds.rb +0 -7
  279. data/features/fixtures/rails3/app/lib/assets/.gitkeep +0 -0
  280. data/features/fixtures/rails3/app/lib/strategies/token_strategy.rb +0 -12
  281. data/features/fixtures/rails3/app/lib/tasks/.gitkeep +0 -0
  282. data/features/fixtures/rails3/app/log/.gitkeep +0 -0
  283. data/features/fixtures/rails3/app/public/404.html +0 -26
  284. data/features/fixtures/rails3/app/public/422.html +0 -26
  285. data/features/fixtures/rails3/app/public/500.html +0 -25
  286. data/features/fixtures/rails3/app/public/favicon.ico +0 -0
  287. data/features/fixtures/rails3/app/public/index.html +0 -241
  288. data/features/fixtures/rails3/app/public/robots.txt +0 -5
  289. data/features/fixtures/rails3/app/script/rails +0 -6
  290. data/features/fixtures/rails4/.dockerignore +0 -1
  291. data/features/fixtures/rails4/Dockerfile +0 -17
  292. data/features/fixtures/rails4/app/.gitignore +0 -16
  293. data/features/fixtures/rails4/app/Gemfile +0 -46
  294. data/features/fixtures/rails4/app/README.rdoc +0 -28
  295. data/features/fixtures/rails4/app/Rakefile +0 -6
  296. data/features/fixtures/rails4/app/app/assets/images/.keep +0 -0
  297. data/features/fixtures/rails4/app/app/assets/javascripts/application.js +0 -16
  298. data/features/fixtures/rails4/app/app/assets/stylesheets/application.css +0 -13
  299. data/features/fixtures/rails4/app/app/controllers/api_key_controller.rb +0 -20
  300. data/features/fixtures/rails4/app/app/controllers/app_type_controller.rb +0 -20
  301. data/features/fixtures/rails4/app/app/controllers/app_version_controller.rb +0 -25
  302. data/features/fixtures/rails4/app/app/controllers/application_controller.rb +0 -7
  303. data/features/fixtures/rails4/app/app/controllers/auto_notify_controller.rb +0 -31
  304. data/features/fixtures/rails4/app/app/controllers/before_notify_controller.rb +0 -44
  305. data/features/fixtures/rails4/app/app/controllers/breadcrumbs_controller.rb +0 -26
  306. data/features/fixtures/rails4/app/app/controllers/concerns/.keep +0 -0
  307. data/features/fixtures/rails4/app/app/controllers/devise_controller.rb +0 -32
  308. data/features/fixtures/rails4/app/app/controllers/handled_controller.rb +0 -26
  309. data/features/fixtures/rails4/app/app/controllers/ignore_classes_controller.rb +0 -23
  310. data/features/fixtures/rails4/app/app/controllers/metadata_filters_controller.rb +0 -16
  311. data/features/fixtures/rails4/app/app/controllers/mongo_controller.rb +0 -23
  312. data/features/fixtures/rails4/app/app/controllers/project_root_controller.rb +0 -25
  313. data/features/fixtures/rails4/app/app/controllers/release_stage_controller.rb +0 -20
  314. data/features/fixtures/rails4/app/app/controllers/send_code_controller.rb +0 -20
  315. data/features/fixtures/rails4/app/app/controllers/send_environment_controller.rb +0 -12
  316. data/features/fixtures/rails4/app/app/controllers/session_tracking_controller.rb +0 -24
  317. data/features/fixtures/rails4/app/app/controllers/unhandled_controller.rb +0 -11
  318. data/features/fixtures/rails4/app/app/helpers/application_helper.rb +0 -2
  319. data/features/fixtures/rails4/app/app/jobs/application_job.rb +0 -2
  320. data/features/fixtures/rails4/app/app/jobs/notify_job.rb +0 -5
  321. data/features/fixtures/rails4/app/app/mailers/.keep +0 -0
  322. data/features/fixtures/rails4/app/app/models/.keep +0 -0
  323. data/features/fixtures/rails4/app/app/models/concerns/.keep +0 -0
  324. data/features/fixtures/rails4/app/app/models/mongo_model.rb +0 -6
  325. data/features/fixtures/rails4/app/app/models/user.rb +0 -6
  326. data/features/fixtures/rails4/app/app/views/layouts/application.html.erb +0 -14
  327. data/features/fixtures/rails4/app/config/application.rb +0 -23
  328. data/features/fixtures/rails4/app/config/boot.rb +0 -4
  329. data/features/fixtures/rails4/app/config/database.yml +0 -31
  330. data/features/fixtures/rails4/app/config/environment.rb +0 -5
  331. data/features/fixtures/rails4/app/config/environments/development.rb +0 -31
  332. data/features/fixtures/rails4/app/config/environments/production.rb +0 -81
  333. data/features/fixtures/rails4/app/config/environments/rails_env.rb +0 -30
  334. data/features/fixtures/rails4/app/config/environments/test.rb +0 -31
  335. data/features/fixtures/rails4/app/config/initializers/backtrace_silencers.rb +0 -7
  336. data/features/fixtures/rails4/app/config/initializers/bugsnag.rb +0 -29
  337. data/features/fixtures/rails4/app/config/initializers/devise.rb +0 -283
  338. data/features/fixtures/rails4/app/config/initializers/filter_parameter_logging.rb +0 -5
  339. data/features/fixtures/rails4/app/config/initializers/inflections.rb +0 -16
  340. data/features/fixtures/rails4/app/config/initializers/mime_types.rb +0 -5
  341. data/features/fixtures/rails4/app/config/initializers/secret_token.rb +0 -12
  342. data/features/fixtures/rails4/app/config/initializers/session_store.rb +0 -3
  343. data/features/fixtures/rails4/app/config/initializers/wrap_parameters.rb +0 -14
  344. data/features/fixtures/rails4/app/config/locales/devise.en.yml +0 -64
  345. data/features/fixtures/rails4/app/config/locales/en.yml +0 -23
  346. data/features/fixtures/rails4/app/config/mongoid.yml +0 -22
  347. data/features/fixtures/rails4/app/config/routes.rb +0 -21
  348. data/features/fixtures/rails4/app/config.ru +0 -4
  349. data/features/fixtures/rails4/app/db/migrate/20180420160315_devise_create_users.rb +0 -47
  350. data/features/fixtures/rails4/app/db/seeds.rb +0 -7
  351. data/features/fixtures/rails4/app/lib/assets/.keep +0 -0
  352. data/features/fixtures/rails4/app/lib/tasks/.keep +0 -0
  353. data/features/fixtures/rails4/app/log/.keep +0 -0
  354. data/features/fixtures/rails4/app/public/404.html +0 -58
  355. data/features/fixtures/rails4/app/public/422.html +0 -58
  356. data/features/fixtures/rails4/app/public/500.html +0 -57
  357. data/features/fixtures/rails4/app/public/favicon.ico +0 -0
  358. data/features/fixtures/rails4/app/public/robots.txt +0 -5
  359. data/features/fixtures/rails4/app/test/controllers/.keep +0 -0
  360. data/features/fixtures/rails4/app/test/fixtures/.keep +0 -0
  361. data/features/fixtures/rails4/app/test/helpers/.keep +0 -0
  362. data/features/fixtures/rails4/app/test/integration/.keep +0 -0
  363. data/features/fixtures/rails4/app/test/mailers/.keep +0 -0
  364. data/features/fixtures/rails4/app/test/models/.keep +0 -0
  365. data/features/fixtures/rails4/app/test/test_helper.rb +0 -15
  366. data/features/fixtures/rails5/.dockerignore +0 -1
  367. data/features/fixtures/rails5/Dockerfile +0 -17
  368. data/features/fixtures/rails5/app/.gitignore +0 -21
  369. data/features/fixtures/rails5/app/Gemfile +0 -52
  370. data/features/fixtures/rails5/app/README.md +0 -24
  371. data/features/fixtures/rails5/app/Rakefile +0 -6
  372. data/features/fixtures/rails5/app/app/assets/config/manifest.js +0 -3
  373. data/features/fixtures/rails5/app/app/assets/images/.keep +0 -0
  374. data/features/fixtures/rails5/app/app/assets/javascripts/application.js +0 -16
  375. data/features/fixtures/rails5/app/app/assets/javascripts/cable.js +0 -13
  376. data/features/fixtures/rails5/app/app/assets/javascripts/channels/.keep +0 -0
  377. data/features/fixtures/rails5/app/app/assets/stylesheets/application.css +0 -15
  378. data/features/fixtures/rails5/app/app/channels/application_cable/channel.rb +0 -4
  379. data/features/fixtures/rails5/app/app/channels/application_cable/connection.rb +0 -4
  380. data/features/fixtures/rails5/app/app/controllers/api_key_controller.rb +0 -16
  381. data/features/fixtures/rails5/app/app/controllers/app_type_controller.rb +0 -16
  382. data/features/fixtures/rails5/app/app/controllers/app_version_controller.rb +0 -21
  383. data/features/fixtures/rails5/app/app/controllers/application_controller.rb +0 -7
  384. data/features/fixtures/rails5/app/app/controllers/auto_notify_controller.rb +0 -27
  385. data/features/fixtures/rails5/app/app/controllers/before_notify_controller.rb +0 -40
  386. data/features/fixtures/rails5/app/app/controllers/breadcrumbs_controller.rb +0 -24
  387. data/features/fixtures/rails5/app/app/controllers/clearance_controller.rb +0 -33
  388. data/features/fixtures/rails5/app/app/controllers/concerns/.keep +0 -0
  389. data/features/fixtures/rails5/app/app/controllers/handled_controller.rb +0 -22
  390. data/features/fixtures/rails5/app/app/controllers/ignore_classes_controller.rb +0 -19
  391. data/features/fixtures/rails5/app/app/controllers/metadata_filters_controller.rb +0 -12
  392. data/features/fixtures/rails5/app/app/controllers/mongo_controller.rb +0 -22
  393. data/features/fixtures/rails5/app/app/controllers/project_root_controller.rb +0 -21
  394. data/features/fixtures/rails5/app/app/controllers/release_stage_controller.rb +0 -16
  395. data/features/fixtures/rails5/app/app/controllers/send_code_controller.rb +0 -16
  396. data/features/fixtures/rails5/app/app/controllers/send_environment_controller.rb +0 -8
  397. data/features/fixtures/rails5/app/app/controllers/session_tracking_controller.rb +0 -20
  398. data/features/fixtures/rails5/app/app/controllers/unhandled_controller.rb +0 -7
  399. data/features/fixtures/rails5/app/app/helpers/application_helper.rb +0 -2
  400. data/features/fixtures/rails5/app/app/jobs/application_job.rb +0 -2
  401. data/features/fixtures/rails5/app/app/jobs/notify_job.rb +0 -5
  402. data/features/fixtures/rails5/app/app/mailers/application_mailer.rb +0 -4
  403. data/features/fixtures/rails5/app/app/models/application_record.rb +0 -3
  404. data/features/fixtures/rails5/app/app/models/concerns/.keep +0 -0
  405. data/features/fixtures/rails5/app/app/models/mongo_model.rb +0 -6
  406. data/features/fixtures/rails5/app/app/models/user.rb +0 -3
  407. data/features/fixtures/rails5/app/app/views/layouts/application.html.erb +0 -14
  408. data/features/fixtures/rails5/app/app/views/layouts/mailer.html.erb +0 -13
  409. data/features/fixtures/rails5/app/app/views/layouts/mailer.text.erb +0 -1
  410. data/features/fixtures/rails5/app/config/application.rb +0 -15
  411. data/features/fixtures/rails5/app/config/boot.rb +0 -3
  412. data/features/fixtures/rails5/app/config/cable.yml +0 -9
  413. data/features/fixtures/rails5/app/config/database.yml +0 -29
  414. data/features/fixtures/rails5/app/config/environment.rb +0 -5
  415. data/features/fixtures/rails5/app/config/environments/development.rb +0 -55
  416. data/features/fixtures/rails5/app/config/environments/production.rb +0 -87
  417. data/features/fixtures/rails5/app/config/environments/rails_env.rb +0 -55
  418. data/features/fixtures/rails5/app/config/environments/test.rb +0 -55
  419. data/features/fixtures/rails5/app/config/initializers/assets.rb +0 -11
  420. data/features/fixtures/rails5/app/config/initializers/backtrace_silencers.rb +0 -7
  421. data/features/fixtures/rails5/app/config/initializers/bugsnag.rb +0 -29
  422. data/features/fixtures/rails5/app/config/initializers/clearance.rb +0 -5
  423. data/features/fixtures/rails5/app/config/initializers/cookies_serializer.rb +0 -5
  424. data/features/fixtures/rails5/app/config/initializers/filter_parameter_logging.rb +0 -5
  425. data/features/fixtures/rails5/app/config/initializers/inflections.rb +0 -16
  426. data/features/fixtures/rails5/app/config/initializers/mime_types.rb +0 -4
  427. data/features/fixtures/rails5/app/config/initializers/new_framework_defaults.rb +0 -24
  428. data/features/fixtures/rails5/app/config/initializers/session_store.rb +0 -3
  429. data/features/fixtures/rails5/app/config/initializers/wrap_parameters.rb +0 -14
  430. data/features/fixtures/rails5/app/config/locales/devise.en.yml +0 -64
  431. data/features/fixtures/rails5/app/config/locales/en.yml +0 -23
  432. data/features/fixtures/rails5/app/config/mongoid.yml +0 -23
  433. data/features/fixtures/rails5/app/config/puma.rb +0 -47
  434. data/features/fixtures/rails5/app/config/routes.rb +0 -62
  435. data/features/fixtures/rails5/app/config/secrets.yml +0 -25
  436. data/features/fixtures/rails5/app/config/spring.rb +0 -6
  437. data/features/fixtures/rails5/app/config.ru +0 -5
  438. data/features/fixtures/rails5/app/db/migrate/20180426095545_create_users.rb +0 -17
  439. data/features/fixtures/rails5/app/db/schema.rb +0 -29
  440. data/features/fixtures/rails5/app/db/seeds.rb +0 -7
  441. data/features/fixtures/rails5/app/lib/assets/.keep +0 -0
  442. data/features/fixtures/rails5/app/lib/tasks/.keep +0 -0
  443. data/features/fixtures/rails5/app/log/.keep +0 -0
  444. data/features/fixtures/rails5/app/public/404.html +0 -67
  445. data/features/fixtures/rails5/app/public/422.html +0 -67
  446. data/features/fixtures/rails5/app/public/500.html +0 -66
  447. data/features/fixtures/rails5/app/public/apple-touch-icon-precomposed.png +0 -0
  448. data/features/fixtures/rails5/app/public/apple-touch-icon.png +0 -0
  449. data/features/fixtures/rails5/app/public/favicon.ico +0 -0
  450. data/features/fixtures/rails5/app/public/robots.txt +0 -5
  451. data/features/fixtures/rails5/app/test/controllers/.keep +0 -0
  452. data/features/fixtures/rails5/app/test/fixtures/.keep +0 -0
  453. data/features/fixtures/rails5/app/test/fixtures/files/.keep +0 -0
  454. data/features/fixtures/rails5/app/test/helpers/.keep +0 -0
  455. data/features/fixtures/rails5/app/test/integration/.keep +0 -0
  456. data/features/fixtures/rails5/app/test/mailers/.keep +0 -0
  457. data/features/fixtures/rails5/app/test/models/.keep +0 -0
  458. data/features/fixtures/rails5/app/test/test_helper.rb +0 -10
  459. data/features/fixtures/rails5/app/tmp/.keep +0 -0
  460. data/features/fixtures/rails6/.dockerignore +0 -1
  461. data/features/fixtures/rails6/Dockerfile +0 -26
  462. data/features/fixtures/rails6/app/.browserslistrc +0 -1
  463. data/features/fixtures/rails6/app/.gitignore +0 -35
  464. data/features/fixtures/rails6/app/.ruby-version +0 -1
  465. data/features/fixtures/rails6/app/Gemfile +0 -58
  466. data/features/fixtures/rails6/app/README.md +0 -24
  467. data/features/fixtures/rails6/app/Rakefile +0 -6
  468. data/features/fixtures/rails6/app/app/assets/config/manifest.js +0 -2
  469. data/features/fixtures/rails6/app/app/assets/images/.keep +0 -0
  470. data/features/fixtures/rails6/app/app/assets/stylesheets/application.css +0 -15
  471. data/features/fixtures/rails6/app/app/channels/application_cable/channel.rb +0 -4
  472. data/features/fixtures/rails6/app/app/channels/application_cable/connection.rb +0 -4
  473. data/features/fixtures/rails6/app/app/controllers/api_key_controller.rb +0 -16
  474. data/features/fixtures/rails6/app/app/controllers/app_type_controller.rb +0 -16
  475. data/features/fixtures/rails6/app/app/controllers/app_version_controller.rb +0 -21
  476. data/features/fixtures/rails6/app/app/controllers/application_controller.rb +0 -7
  477. data/features/fixtures/rails6/app/app/controllers/auto_notify_controller.rb +0 -27
  478. data/features/fixtures/rails6/app/app/controllers/before_notify_controller.rb +0 -40
  479. data/features/fixtures/rails6/app/app/controllers/breadcrumbs_controller.rb +0 -24
  480. data/features/fixtures/rails6/app/app/controllers/clearance_controller.rb +0 -33
  481. data/features/fixtures/rails6/app/app/controllers/concerns/.keep +0 -0
  482. data/features/fixtures/rails6/app/app/controllers/handled_controller.rb +0 -22
  483. data/features/fixtures/rails6/app/app/controllers/ignore_classes_controller.rb +0 -19
  484. data/features/fixtures/rails6/app/app/controllers/metadata_filters_controller.rb +0 -12
  485. data/features/fixtures/rails6/app/app/controllers/mongo_controller.rb +0 -22
  486. data/features/fixtures/rails6/app/app/controllers/project_root_controller.rb +0 -21
  487. data/features/fixtures/rails6/app/app/controllers/release_stage_controller.rb +0 -16
  488. data/features/fixtures/rails6/app/app/controllers/send_code_controller.rb +0 -16
  489. data/features/fixtures/rails6/app/app/controllers/send_environment_controller.rb +0 -8
  490. data/features/fixtures/rails6/app/app/controllers/session_tracking_controller.rb +0 -20
  491. data/features/fixtures/rails6/app/app/controllers/unhandled_controller.rb +0 -7
  492. data/features/fixtures/rails6/app/app/helpers/application_helper.rb +0 -2
  493. data/features/fixtures/rails6/app/app/javascript/channels/consumer.js +0 -6
  494. data/features/fixtures/rails6/app/app/javascript/channels/index.js +0 -5
  495. data/features/fixtures/rails6/app/app/javascript/packs/application.js +0 -9
  496. data/features/fixtures/rails6/app/app/jobs/application_job.rb +0 -7
  497. data/features/fixtures/rails6/app/app/jobs/notify_job.rb +0 -5
  498. data/features/fixtures/rails6/app/app/mailers/application_mailer.rb +0 -4
  499. data/features/fixtures/rails6/app/app/models/application_record.rb +0 -3
  500. data/features/fixtures/rails6/app/app/models/concerns/.keep +0 -0
  501. data/features/fixtures/rails6/app/app/models/mongo_model.rb +0 -6
  502. data/features/fixtures/rails6/app/app/models/user.rb +0 -3
  503. data/features/fixtures/rails6/app/app/views/layouts/application.html.erb +0 -15
  504. data/features/fixtures/rails6/app/app/views/layouts/mailer.html.erb +0 -13
  505. data/features/fixtures/rails6/app/app/views/layouts/mailer.text.erb +0 -1
  506. data/features/fixtures/rails6/app/babel.config.js +0 -70
  507. data/features/fixtures/rails6/app/config/application.rb +0 -19
  508. data/features/fixtures/rails6/app/config/boot.rb +0 -4
  509. data/features/fixtures/rails6/app/config/cable.yml +0 -13
  510. data/features/fixtures/rails6/app/config/credentials.yml.enc +0 -1
  511. data/features/fixtures/rails6/app/config/database.yml +0 -29
  512. data/features/fixtures/rails6/app/config/environment.rb +0 -5
  513. data/features/fixtures/rails6/app/config/environments/development.rb +0 -64
  514. data/features/fixtures/rails6/app/config/environments/production.rb +0 -113
  515. data/features/fixtures/rails6/app/config/environments/rails_env.rb +0 -56
  516. data/features/fixtures/rails6/app/config/environments/test.rb +0 -48
  517. data/features/fixtures/rails6/app/config/initializers/application_controller_renderer.rb +0 -8
  518. data/features/fixtures/rails6/app/config/initializers/assets.rb +0 -14
  519. data/features/fixtures/rails6/app/config/initializers/backtrace_silencers.rb +0 -7
  520. data/features/fixtures/rails6/app/config/initializers/bugsnag.rb +0 -29
  521. data/features/fixtures/rails6/app/config/initializers/content_security_policy.rb +0 -27
  522. data/features/fixtures/rails6/app/config/initializers/cookies_serializer.rb +0 -5
  523. data/features/fixtures/rails6/app/config/initializers/filter_parameter_logging.rb +0 -5
  524. data/features/fixtures/rails6/app/config/initializers/inflections.rb +0 -16
  525. data/features/fixtures/rails6/app/config/initializers/mime_types.rb +0 -4
  526. data/features/fixtures/rails6/app/config/initializers/wrap_parameters.rb +0 -14
  527. data/features/fixtures/rails6/app/config/locales/en.yml +0 -33
  528. data/features/fixtures/rails6/app/config/mongoid.yml +0 -23
  529. data/features/fixtures/rails6/app/config/puma.rb +0 -35
  530. data/features/fixtures/rails6/app/config/routes.rb +0 -62
  531. data/features/fixtures/rails6/app/config/secrets.yml +0 -25
  532. data/features/fixtures/rails6/app/config/spring.rb +0 -6
  533. data/features/fixtures/rails6/app/config/storage.yml +0 -34
  534. data/features/fixtures/rails6/app/config/webpack/development.js +0 -5
  535. data/features/fixtures/rails6/app/config/webpack/environment.js +0 -3
  536. data/features/fixtures/rails6/app/config/webpack/production.js +0 -5
  537. data/features/fixtures/rails6/app/config/webpack/rails_env.js +0 -5
  538. data/features/fixtures/rails6/app/config/webpack/test.js +0 -5
  539. data/features/fixtures/rails6/app/config/webpacker.yml +0 -121
  540. data/features/fixtures/rails6/app/config.ru +0 -5
  541. data/features/fixtures/rails6/app/db/migrate/20180426095545_create_users.rb +0 -17
  542. data/features/fixtures/rails6/app/db/schema.rb +0 -29
  543. data/features/fixtures/rails6/app/db/seeds.rb +0 -7
  544. data/features/fixtures/rails6/app/lib/assets/.keep +0 -0
  545. data/features/fixtures/rails6/app/lib/tasks/.keep +0 -0
  546. data/features/fixtures/rails6/app/log/.keep +0 -0
  547. data/features/fixtures/rails6/app/package.json +0 -15
  548. data/features/fixtures/rails6/app/postcss.config.js +0 -12
  549. data/features/fixtures/rails6/app/public/404.html +0 -67
  550. data/features/fixtures/rails6/app/public/422.html +0 -67
  551. data/features/fixtures/rails6/app/public/500.html +0 -66
  552. data/features/fixtures/rails6/app/public/apple-touch-icon-precomposed.png +0 -0
  553. data/features/fixtures/rails6/app/public/apple-touch-icon.png +0 -0
  554. data/features/fixtures/rails6/app/public/favicon.ico +0 -0
  555. data/features/fixtures/rails6/app/public/robots.txt +0 -1
  556. data/features/fixtures/rails6/app/storage/.keep +0 -0
  557. data/features/fixtures/rails6/app/test/application_system_test_case.rb +0 -5
  558. data/features/fixtures/rails6/app/test/channels/application_cable/connection_test.rb +0 -11
  559. data/features/fixtures/rails6/app/test/controllers/.keep +0 -0
  560. data/features/fixtures/rails6/app/test/fixtures/.keep +0 -0
  561. data/features/fixtures/rails6/app/test/fixtures/files/.keep +0 -0
  562. data/features/fixtures/rails6/app/test/helpers/.keep +0 -0
  563. data/features/fixtures/rails6/app/test/integration/.keep +0 -0
  564. data/features/fixtures/rails6/app/test/mailers/.keep +0 -0
  565. data/features/fixtures/rails6/app/test/models/.keep +0 -0
  566. data/features/fixtures/rails6/app/test/system/.keep +0 -0
  567. data/features/fixtures/rails6/app/test/test_helper.rb +0 -13
  568. data/features/fixtures/rails6/app/tmp/.keep +0 -0
  569. data/features/fixtures/rails6/app/yarn.lock +0 -6082
  570. data/features/fixtures/resque/.dockerignore +0 -1
  571. data/features/fixtures/resque/Dockerfile +0 -14
  572. data/features/fixtures/resque/Gemfile +0 -6
  573. data/features/fixtures/resque/Rakefile +0 -4
  574. data/features/fixtures/resque/app.rb +0 -12
  575. data/features/fixtures/sidekiq/.dockerignore +0 -2
  576. data/features/fixtures/sidekiq/Dockerfile +0 -17
  577. data/features/fixtures/sidekiq/app/Gemfile +0 -7
  578. data/features/fixtures/sidekiq/app/Rakefile.rb +0 -14
  579. data/features/fixtures/sidekiq/app/app.rb +0 -35
  580. data/features/fixtures/sidekiq/app/initializers/HandledError.rb +0 -3
  581. data/features/fixtures/sidekiq/app/initializers/UnhandledError.rb +0 -3
  582. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_false.json +0 -11
  583. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_true.json +0 -12
  584. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_false.json +0 -11
  585. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_true.json +0 -12
  586. data/features/fixtures/sinatra1/.dockerignore +0 -1
  587. data/features/fixtures/sinatra1/Dockerfile +0 -13
  588. data/features/fixtures/sinatra1/Gemfile +0 -4
  589. data/features/fixtures/sinatra1/app.rb +0 -9
  590. data/features/fixtures/sinatra2/.dockerignore +0 -1
  591. data/features/fixtures/sinatra2/Dockerfile +0 -13
  592. data/features/fixtures/sinatra2/Gemfile +0 -4
  593. data/features/fixtures/sinatra2/app.rb +0 -9
  594. data/features/plain_features/add_tab.feature +0 -55
  595. data/features/plain_features/app_type.feature +0 -8
  596. data/features/plain_features/app_version.feature +0 -8
  597. data/features/plain_features/auto_notify.feature +0 -7
  598. data/features/plain_features/delivery.feature +0 -20
  599. data/features/plain_features/exception_data.feature +0 -50
  600. data/features/plain_features/filters.feature +0 -14
  601. data/features/plain_features/handled_errors.feature +0 -42
  602. data/features/plain_features/ignore_classes.feature +0 -11
  603. data/features/plain_features/ignore_report.feature +0 -14
  604. data/features/plain_features/proxies.feature +0 -25
  605. data/features/plain_features/release_stages.feature +0 -20
  606. data/features/plain_features/report_api_key.feature +0 -16
  607. data/features/plain_features/report_severity.feature +0 -17
  608. data/features/plain_features/report_stack_frames.feature +0 -53
  609. data/features/plain_features/report_user.feature +0 -51
  610. data/features/plain_features/unhandled_errors.feature +0 -33
  611. data/features/rails_features/api_key.feature +0 -15
  612. data/features/rails_features/app_type.feature +0 -24
  613. data/features/rails_features/app_version.feature +0 -26
  614. data/features/rails_features/auto_capture_sessions.feature +0 -34
  615. data/features/rails_features/auto_notify.feature +0 -41
  616. data/features/rails_features/before_notify.feature +0 -44
  617. data/features/rails_features/breadcrumbs.feature +0 -43
  618. data/features/rails_features/handled.feature +0 -42
  619. data/features/rails_features/ignore_classes.feature +0 -14
  620. data/features/rails_features/meta_data_filters.feature +0 -16
  621. data/features/rails_features/mongo_breadcrumbs.feature +0 -26
  622. data/features/rails_features/on_error.feature +0 -29
  623. data/features/rails_features/project_root.feature +0 -35
  624. data/features/rails_features/release_stage.feature +0 -27
  625. data/features/rails_features/send_code.feature +0 -18
  626. data/features/rails_features/send_environment.feature +0 -13
  627. data/features/rails_features/unhandled.feature +0 -16
  628. data/features/rails_features/user_info.feature +0 -52
  629. data/features/sidekiq.feature +0 -30
  630. data/features/steps/ruby_notifier_steps.rb +0 -75
  631. data/features/support/env.rb +0 -23
  632. data/issue_template.md +0 -48
  633. data/spec/breadcrumbs/breadcrumb_spec.rb +0 -93
  634. data/spec/breadcrumbs/validator_spec.rb +0 -176
  635. data/spec/bugsnag_spec.rb +0 -366
  636. data/spec/cleaner_spec.rb +0 -350
  637. data/spec/code_extractor_spec.rb +0 -129
  638. data/spec/configuration_spec.rb +0 -445
  639. data/spec/fixtures/apps/rails-initializer-config/Gemfile +0 -9
  640. data/spec/fixtures/apps/rails-initializer-config/config/initializers/bugsnag.rb +0 -3
  641. data/spec/fixtures/apps/rails-initializer-config/config.ru +0 -16
  642. data/spec/fixtures/apps/rails-invalid-initializer-config/Gemfile +0 -9
  643. data/spec/fixtures/apps/rails-invalid-initializer-config/config/initializers/bugsnag.rb +0 -3
  644. data/spec/fixtures/apps/rails-invalid-initializer-config/config.ru +0 -16
  645. data/spec/fixtures/apps/rails-no-config/Gemfile +0 -9
  646. data/spec/fixtures/apps/rails-no-config/config.ru +0 -16
  647. data/spec/fixtures/apps/scripts/Gemfile +0 -3
  648. data/spec/fixtures/apps/scripts/configure_invalid_key.rb +0 -5
  649. data/spec/fixtures/apps/scripts/configure_key.rb +0 -5
  650. data/spec/fixtures/apps/scripts/no_config.rb +0 -3
  651. data/spec/fixtures/crashes/end_of_file.rb +0 -9
  652. data/spec/fixtures/crashes/file1.rb +0 -29
  653. data/spec/fixtures/crashes/file2.rb +0 -25
  654. data/spec/fixtures/crashes/file_with_long_lines.rb +0 -7
  655. data/spec/fixtures/crashes/functions.rb +0 -29
  656. data/spec/fixtures/crashes/short_file.rb +0 -3
  657. data/spec/fixtures/crashes/start_of_file.rb +0 -9
  658. data/spec/fixtures/middleware/internal_info_setter.rb +0 -11
  659. data/spec/fixtures/middleware/public_info_setter.rb +0 -11
  660. data/spec/fixtures/tasks/Rakefile +0 -26
  661. data/spec/helper_spec.rb +0 -131
  662. data/spec/integration_spec.rb +0 -107
  663. data/spec/integrations/clearance_user_spec.rb +0 -38
  664. data/spec/integrations/logger_spec.rb +0 -134
  665. data/spec/integrations/mailman_spec.rb +0 -83
  666. data/spec/integrations/mongo_spec.rb +0 -262
  667. data/spec/integrations/que_spec.rb +0 -94
  668. data/spec/integrations/rack_spec.rb +0 -232
  669. data/spec/integrations/rails3_request_spec.rb +0 -67
  670. data/spec/integrations/rake_spec.rb +0 -71
  671. data/spec/integrations/resque_spec.rb +0 -99
  672. data/spec/integrations/shoryuken_spec.rb +0 -70
  673. data/spec/integrations/sidekiq_spec.rb +0 -137
  674. data/spec/integrations/warden_user_spec.rb +0 -41
  675. data/spec/middleware/exception_meta_data_spec.rb +0 -104
  676. data/spec/middleware_spec.rb +0 -254
  677. data/spec/middleware_stack_spec.rb +0 -151
  678. data/spec/on_error_spec.rb +0 -332
  679. data/spec/report_spec.rb +0 -1583
  680. data/spec/session_tracker_spec.rb +0 -156
  681. data/spec/spec_helper.rb +0 -99
  682. data/spec/stacktrace_spec.rb +0 -443
  683. data/spec/utility/circular_buffer_spec.rb +0 -98
@@ -1,81 +1,199 @@
1
- require "set"
2
- require "socket"
3
- require "logger"
4
- require "bugsnag/middleware_stack"
1
+ require "bugsnag/breadcrumbs/on_breadcrumb_callback_list"
2
+
3
+ require "bugsnag/endpoint_configuration"
4
+ require "bugsnag/endpoint_validator"
5
+
6
+ require "bugsnag/middleware/breadcrumbs"
5
7
  require "bugsnag/middleware/callbacks"
8
+ require "bugsnag/middleware/classify_error"
9
+ require "bugsnag/middleware/clearance_user"
10
+ require "bugsnag/middleware/delayed_job"
6
11
  require "bugsnag/middleware/discard_error_class"
7
12
  require "bugsnag/middleware/exception_meta_data"
8
13
  require "bugsnag/middleware/ignore_error_class"
9
- require "bugsnag/middleware/suggestion_data"
10
- require "bugsnag/middleware/classify_error"
14
+ require "bugsnag/middleware/mailman"
15
+ require "bugsnag/middleware/rack_request"
16
+ require "bugsnag/middleware/rails3_request"
17
+ require "bugsnag/middleware/rake"
11
18
  require "bugsnag/middleware/session_data"
12
- require "bugsnag/middleware/breadcrumbs"
19
+ require "bugsnag/middleware/sidekiq"
20
+ require "bugsnag/middleware/suggestion_data"
21
+ require "bugsnag/middleware/warden_user"
22
+
23
+ require "bugsnag/middleware_stack"
24
+
13
25
  require "bugsnag/utility/circular_buffer"
14
- require "bugsnag/breadcrumbs/breadcrumbs"
15
26
 
16
27
  module Bugsnag
17
28
  class Configuration
29
+ # Your Integration API Key
30
+ # @return [String, nil]
18
31
  attr_accessor :api_key
32
+
33
+ # The current stage of the release process, e.g. 'development', production'
34
+ # @return [String, nil]
19
35
  attr_accessor :release_stage
36
+
37
+ # A list of which release stages should cause notifications to be sent
38
+ # @deprecated Use {#enabled_release_stages} instead
39
+ # @return [Array<String>, nil]
20
40
  attr_accessor :notify_release_stages
41
+
42
+ # Whether notifications should automatically be sent
43
+ # @return [Boolean]
21
44
  attr_accessor :auto_notify
45
+
46
+ # @return [String, nil]
22
47
  attr_accessor :ca_file
48
+
49
+ # Whether to automatically attach the Rack environment to notifications
50
+ # @return [Boolean]
23
51
  attr_accessor :send_environment
52
+
53
+ # Whether code snippets from the exception stacktrace should be sent with notifications
54
+ # @return [Boolean]
24
55
  attr_accessor :send_code
56
+
57
+ # Any stacktrace lines that match this path will be marked as 'in project'
58
+ # @return [String, nil]
25
59
  attr_accessor :project_root
60
+
61
+ # The current version of your application
62
+ # @return [String, nil]
26
63
  attr_accessor :app_version
27
- attr_accessor :app_type
64
+
65
+ # A list of keys that should be filtered out from the report and breadcrumb
66
+ # metadata before sending them to Bugsnag
67
+ # @deprecated Use {#redacted_keys} instead
68
+ # @return [Set<String, Regexp>]
28
69
  attr_accessor :meta_data_filters
70
+
71
+ # A set of keys that should be redacted from the report and breadcrumb
72
+ # metadata before sending them to Bugsnag
73
+ #
74
+ # When adding strings, keys that are equal to the string (ignoring case)
75
+ # will be redacted. When adding regular expressions, any keys which match
76
+ # the regular expression will be redacted
77
+ #
78
+ # @return [Set<String, Regexp>]
79
+ attr_accessor :redacted_keys
80
+
81
+ # The logger to use for Bugsnag log messages
82
+ # @return [Logger]
29
83
  attr_accessor :logger
84
+
85
+ # The middleware stack that will run on every notification
86
+ # @return [MiddlewareStack]
30
87
  attr_accessor :middleware
88
+
89
+ # @api private
90
+ # @return [MiddlewareStack]
31
91
  attr_accessor :internal_middleware
92
+
93
+ # The host address of the HTTP proxy that should be used when making requests
94
+ # @see parse_proxy
95
+ # @return [String, nil]
32
96
  attr_accessor :proxy_host
97
+
98
+ # The port number of the HTTP proxy that should be used when making requests
99
+ # @see parse_proxy
100
+ # @return [Integer, nil]
33
101
  attr_accessor :proxy_port
102
+
103
+ # The user that should be used when making requests via a HTTP proxy
104
+ # @see parse_proxy
105
+ # @return [String, nil]
34
106
  attr_accessor :proxy_user
107
+
108
+ # The password for the user that should be used when making requests via a HTTP proxy
109
+ # @see parse_proxy
110
+ # @return [String, nil]
35
111
  attr_accessor :proxy_password
112
+
113
+ # The HTTP request timeout, defaults to 15 seconds
114
+ # @return [Integer]
36
115
  attr_accessor :timeout
116
+
117
+ # The name or descriptor of the Ruby server host
118
+ # @return [String]
37
119
  attr_accessor :hostname
120
+
121
+ # @api private
122
+ # @return [Hash{String => String}]
38
123
  attr_accessor :runtime_versions
124
+
125
+ # Exception classes that will be discarded and not sent to Bugsnag
126
+ # @return [Set<String, Regexp>]
39
127
  attr_accessor :discard_classes
128
+
129
+ # Whether Bugsnag should automatically record sessions
130
+ # @deprecated Use {#auto_track_sessions} instead
131
+ # @return [Boolean]
40
132
  attr_accessor :auto_capture_sessions
41
133
 
42
- ##
43
134
  # @deprecated Use {#discard_classes} instead
135
+ # @return [Set<Class, Proc>]
44
136
  attr_accessor :ignore_classes
45
137
 
46
- ##
47
- # @return [String] URL error notifications will be delivered to
48
- attr_reader :notify_endpoint
49
- alias :endpoint :notify_endpoint
138
+ # The URLs to send events and sessions to
139
+ # @return [EndpointConfiguration]
140
+ attr_reader :endpoints
50
141
 
51
- ##
52
- # @return [String] URL session notifications will be delivered to
53
- attr_reader :session_endpoint
142
+ # Whether events will be delivered
143
+ # @api private
144
+ # @return [Boolean]
145
+ attr_reader :enable_events
54
146
 
55
- ##
56
- # @return [Boolean] whether any sessions types will be delivered
147
+ # Whether sessions will be delivered
148
+ # @api private
149
+ # @return [Boolean]
57
150
  attr_reader :enable_sessions
58
151
 
59
- ##
60
- # @return [Array<String>] strings indicating allowable automatic breadcrumb types
152
+ # A list of strings indicating allowable automatic breadcrumb types
153
+ # @deprecated Use {#enabled_breadcrumb_types} instead
154
+ # @see Bugsnag::BreadcrumbType
155
+ # @return [Array<String>]
61
156
  attr_accessor :enabled_automatic_breadcrumb_types
62
157
 
63
- ##
64
- # @return [Array<#call>] callables to be run before a breadcrumb is logged
158
+ # Callables to be run before a breadcrumb is logged
159
+ # @return [Array<#call>]
65
160
  attr_accessor :before_breadcrumb_callbacks
66
161
 
67
- ##
68
- # @return [Integer] the maximum allowable amount of breadcrumbs per thread
162
+ # The maximum allowable amount of breadcrumbs per thread
163
+ # @return [Integer]
69
164
  attr_reader :max_breadcrumbs
70
165
 
71
- ##
72
- # @return [Regexp] matching file paths out of project
166
+ # @deprecated Use {vendor_paths} instead
167
+ # @return [Regexp]
73
168
  attr_accessor :vendor_path
74
169
 
75
- ##
76
- # @return [Array]
170
+ # An array of paths within the {project_root} that should not be considered
171
+ # as "in project"
172
+ #
173
+ # These paths should be relative to the {project_root} and will only match
174
+ # whole directory names
175
+ #
176
+ # @return [Array<String>]
177
+ attr_accessor :vendor_paths
178
+
179
+ # The default context for all future events
180
+ # Setting this will disable automatic context setting
181
+ # @return [String, nil]
182
+ attr_accessor :context
183
+
184
+ # Global metadata added to every event
185
+ # @return [Hash]
186
+ attr_reader :metadata
187
+
188
+ # @api private
189
+ # @return [Array<String>]
77
190
  attr_reader :scopes_to_filter
78
191
 
192
+ # Expose on_breadcrumb_callbacks internally for Bugsnag.leave_breadcrumb
193
+ # @api private
194
+ # @return [Breadcrumbs::OnBreadcrumbCallbackList]
195
+ attr_reader :on_breadcrumb_callbacks
196
+
79
197
  API_KEY_REGEX = /[0-9a-f]{32}/i
80
198
  THREAD_LOCAL_NAME = "bugsnag_req_data"
81
199
 
@@ -97,6 +215,7 @@ module Bugsnag
97
215
  # Path to vendored code. Used to mark file paths as out of project.
98
216
  DEFAULT_VENDOR_PATH = %r{^(vendor/|\.bundle/)}
99
217
 
218
+ # @api private
100
219
  DEFAULT_SCOPES_TO_FILTER = ['events.metaData', 'events.breadcrumbs.metaData'].freeze
101
220
 
102
221
  alias :track_sessions :auto_capture_sessions
@@ -110,28 +229,34 @@ module Bugsnag
110
229
  self.send_environment = false
111
230
  self.send_code = true
112
231
  self.meta_data_filters = Set.new(DEFAULT_META_DATA_FILTERS)
232
+ @redacted_keys = Set.new
113
233
  self.scopes_to_filter = DEFAULT_SCOPES_TO_FILTER
114
234
  self.hostname = default_hostname
115
235
  self.runtime_versions = {}
116
236
  self.runtime_versions["ruby"] = RUBY_VERSION
117
237
  self.runtime_versions["jruby"] = JRUBY_VERSION if defined?(JRUBY_VERSION)
118
238
  self.timeout = 15
239
+ self.release_stage = ENV['BUGSNAG_RELEASE_STAGE']
119
240
  self.notify_release_stages = nil
120
241
  self.auto_capture_sessions = true
121
242
 
122
243
  # All valid breadcrumb types should be allowable initially
123
244
  self.enabled_automatic_breadcrumb_types = Bugsnag::Breadcrumbs::VALID_BREADCRUMB_TYPES.dup
124
245
  self.before_breadcrumb_callbacks = []
246
+ @on_breadcrumb_callbacks = Breadcrumbs::OnBreadcrumbCallbackList.new(self)
125
247
 
126
248
  # Store max_breadcrumbs here instead of outputting breadcrumbs.max_items
127
249
  # to avoid infinite recursion when creating breadcrumb buffer
128
250
  @max_breadcrumbs = DEFAULT_MAX_BREADCRUMBS
129
251
 
130
- # These are set exclusively using the "set_endpoints" method
131
- @notify_endpoint = DEFAULT_NOTIFY_ENDPOINT
132
- @session_endpoint = DEFAULT_SESSION_ENDPOINT
252
+ @endpoints = EndpointConfiguration.new(DEFAULT_NOTIFY_ENDPOINT, DEFAULT_SESSION_ENDPOINT)
253
+
254
+ @enable_events = true
133
255
  @enable_sessions = true
134
256
 
257
+ @metadata = {}
258
+ @metadata_delegate = Utility::MetadataDelegate.new
259
+
135
260
  # SystemExit and SignalException are common Exception types seen with
136
261
  # successful exits and are not automatically reported to Bugsnag
137
262
  # TODO move these defaults into `discard_classes` when `ignore_classes`
@@ -151,6 +276,7 @@ module Bugsnag
151
276
  # Stacktrace lines that matches regex will be marked as "out of project"
152
277
  # will only appear in the full trace.
153
278
  self.vendor_path = DEFAULT_VENDOR_PATH
279
+ @vendor_paths = []
154
280
 
155
281
  # Set up logging
156
282
  self.logger = Logger.new(STDOUT)
@@ -177,6 +303,7 @@ module Bugsnag
177
303
  # Gets the delivery_method that Bugsnag will use to communicate with the
178
304
  # notification endpoint.
179
305
  #
306
+ # @return [Symbol]
180
307
  def delivery_method
181
308
  @delivery_method || @default_delivery_method || :thread_queue
182
309
  end
@@ -185,6 +312,10 @@ module Bugsnag
185
312
  # Sets the delivery_method that Bugsnag will use to communicate with the
186
313
  # notification endpoint.
187
314
  #
315
+ # The default delivery methods are ':thread_queue' and ':synchronous'.
316
+ #
317
+ # @param delivery_method [Symbol]
318
+ # @return [void]
188
319
  def delivery_method=(delivery_method)
189
320
  @delivery_method = delivery_method
190
321
  end
@@ -193,19 +324,75 @@ module Bugsnag
193
324
  # Used to set a new default delivery method that will be used if one is not
194
325
  # set with #delivery_method.
195
326
  #
327
+ # @api private
328
+ #
329
+ # @param delivery_method [Symbol]
330
+ # @return [void]
196
331
  def default_delivery_method=(delivery_method)
197
332
  @default_delivery_method = delivery_method
198
333
  end
199
334
 
335
+ ##
336
+ # Get the type of application executing the current code
337
+ #
338
+ # This is usually used to represent if you are running in a Rails server,
339
+ # Sidekiq job, Rake task etc... Bugsnag will automatically detect most
340
+ # application types for you
341
+ #
342
+ # @return [String, nil]
343
+ def app_type
344
+ @app_type || @detected_app_type
345
+ end
346
+
347
+ ##
348
+ # Set the type of application executing the current code
349
+ #
350
+ # If an app_type is set, this will be used instead of the automatically
351
+ # detected app_type that Bugsnag would otherwise use
352
+ #
353
+ # @param app_type [String]
354
+ # @return [void]
355
+ def app_type=(app_type)
356
+ @app_type = app_type
357
+ end
358
+
359
+ ##
360
+ # Get the detected app_type, which is used when one isn't set explicitly
361
+ #
362
+ # @api private
363
+ #
364
+ # @return [String, nil]
365
+ def detected_app_type
366
+ @detected_app_type
367
+ end
368
+
369
+ ##
370
+ # Set the detected app_type, which is used when one isn't set explicitly
371
+ #
372
+ # This allows Bugsnag's integrations to say 'this is a Rails app' while
373
+ # allowing the user to overwrite this if they wish
374
+ #
375
+ # @api private
376
+ #
377
+ # @param app_type [String]
378
+ # @return [void]
379
+ def detected_app_type=(app_type)
380
+ @detected_app_type = app_type
381
+ end
382
+
200
383
  ##
201
384
  # Indicates whether the notifier should send a notification based on the
202
385
  # configured release stage.
386
+ #
387
+ # @return [Boolean]
203
388
  def should_notify_release_stage?
204
389
  @release_stage.nil? || @notify_release_stages.nil? || @notify_release_stages.include?(@release_stage)
205
390
  end
206
391
 
207
392
  ##
208
393
  # Tests whether the configured API key is valid.
394
+ #
395
+ # @return [Boolean]
209
396
  def valid_api_key?
210
397
  !api_key.nil? && api_key =~ API_KEY_REGEX
211
398
  end
@@ -213,48 +400,76 @@ module Bugsnag
213
400
  ##
214
401
  # Returns the array of data that will be automatically attached to every
215
402
  # error notification.
403
+ #
404
+ # @return [Hash]
216
405
  def request_data
217
406
  Thread.current[THREAD_LOCAL_NAME] ||= {}
218
407
  end
219
408
 
220
409
  ##
221
410
  # Sets an entry in the array of data attached to every error notification.
411
+ #
412
+ # @param key [String, #to_s]
413
+ # @param value [Object]
414
+ # @return [void]
222
415
  def set_request_data(key, value)
223
416
  self.request_data[key] = value
224
417
  end
225
418
 
226
419
  ##
227
420
  # Unsets an entry in the array of data attached to every error notification.
421
+ #
422
+ # @param (see set_request_data)
423
+ # @return [void]
228
424
  def unset_request_data(key, value)
229
425
  self.request_data.delete(key)
230
426
  end
231
427
 
232
428
  ##
233
429
  # Clears the array of data attached to every error notification.
430
+ #
431
+ # @return [void]
234
432
  def clear_request_data
235
433
  Thread.current[THREAD_LOCAL_NAME] = nil
236
434
  end
237
435
 
238
436
  ##
239
437
  # Logs an info level message
438
+ #
439
+ # @param message [String, #to_s] The message to log
240
440
  def info(message)
241
441
  logger.info(PROG_NAME) { message }
242
442
  end
243
443
 
244
444
  ##
245
445
  # Logs a warning level message
446
+ #
447
+ # @param message [String, #to_s] The message to log
246
448
  def warn(message)
247
449
  logger.warn(PROG_NAME) { message }
248
450
  end
249
451
 
452
+ ##
453
+ # Logs an error level message
454
+ #
455
+ # @param message [String, #to_s] The message to log
456
+ def error(message)
457
+ logger.error(PROG_NAME) { message }
458
+ end
459
+
250
460
  ##
251
461
  # Logs a debug level message
462
+ #
463
+ # @param message [String, #to_s] The message to log
252
464
  def debug(message)
253
465
  logger.debug(PROG_NAME) { message }
254
466
  end
255
467
 
256
468
  ##
257
469
  # Parses and sets proxy from a uri
470
+ #
471
+ # @param uri [String, #to_s] The URI to parse and extract proxy details from
472
+ # @return [void]
258
473
  def parse_proxy(uri)
259
474
  proxy = URI.parse(uri)
260
475
  self.proxy_host = proxy.host
@@ -266,38 +481,62 @@ module Bugsnag
266
481
  ##
267
482
  # Sets the maximum allowable amount of breadcrumbs
268
483
  #
269
- # @param [Integer] the new maximum breadcrumb limit
484
+ # @param new_max_breadcrumbs [Integer] the new maximum breadcrumb limit
485
+ # @return [void]
270
486
  def max_breadcrumbs=(new_max_breadcrumbs)
271
487
  @max_breadcrumbs = new_max_breadcrumbs
272
488
  breadcrumbs.max_items = new_max_breadcrumbs
273
489
  end
274
490
 
275
491
  ##
276
- # Returns the breadcrumb circular buffer
492
+ # Returns the current list of breadcrumbs
493
+ #
494
+ # This is a per-thread circular buffer, containing at most 'max_breadcrumbs'
495
+ # breadcrumbs
277
496
  #
278
- # @return [Bugsnag::Utility::CircularBuffer] a thread based circular buffer containing breadcrumbs
497
+ # @return [Bugsnag::Utility::CircularBuffer]
279
498
  def breadcrumbs
280
499
  request_data[:breadcrumbs] ||= Bugsnag::Utility::CircularBuffer.new(@max_breadcrumbs)
281
500
  end
282
501
 
502
+ # The URL error notifications will be delivered to
503
+ # @!attribute notify_endpoint
504
+ # @return [String]
505
+ # @deprecated Use {#endpoints} instead
506
+ def notify_endpoint
507
+ @endpoints.notify
508
+ end
509
+
510
+ alias :endpoint :notify_endpoint
511
+
283
512
  # Sets the notification endpoint
284
513
  #
285
- # @param new_notify_endpoint [String] The URL to deliver error notifications to
514
+ # @deprecated Use {#endpoints} instead
286
515
  #
287
- # @deprecated Use {#set_endpoints} instead
516
+ # @param new_notify_endpoint [String] The URL to deliver error notifications to
517
+ # @return [void]
288
518
  def endpoint=(new_notify_endpoint)
289
- warn("The 'endpoint' configuration option is deprecated. The 'set_endpoints' method should be used instead")
519
+ warn("The 'endpoint' configuration option is deprecated. Set both endpoints with the 'endpoints=' method instead")
290
520
  set_endpoints(new_notify_endpoint, session_endpoint) # Pass the existing session_endpoint through so it doesn't get overwritten
291
521
  end
292
522
 
523
+ # The URL session notifications will be delivered to
524
+ # @!attribute session_endpoint
525
+ # @return [String]
526
+ # @deprecated Use {#endpoints} instead
527
+ def session_endpoint
528
+ @endpoints.sessions
529
+ end
530
+
293
531
  ##
294
532
  # Sets the sessions endpoint
295
533
  #
296
- # @param new_session_endpoint [String] The URL to deliver session notifications to
534
+ # @deprecated Use {#endpoints} instead
297
535
  #
298
- # @deprecated Use {#set_endpoints} instead
536
+ # @param new_session_endpoint [String] The URL to deliver session notifications to
537
+ # @return [void]
299
538
  def session_endpoint=(new_session_endpoint)
300
- warn("The 'session_endpoint' configuration option is deprecated. The 'set_endpoints' method should be used instead")
539
+ warn("The 'session_endpoint' configuration option is deprecated. Set both endpoints with the 'endpoints=' method instead")
301
540
  set_endpoints(notify_endpoint, new_session_endpoint) # Pass the existing notify_endpoint through so it doesn't get overwritten
302
541
  end
303
542
 
@@ -306,18 +545,52 @@ module Bugsnag
306
545
  #
307
546
  # @param new_notify_endpoint [String] The URL to deliver error notifications to
308
547
  # @param new_session_endpoint [String] The URL to deliver session notifications to
548
+ # @return [void]
549
+ # @deprecated Use {#endpoints} instead
309
550
  def set_endpoints(new_notify_endpoint, new_session_endpoint)
310
- @notify_endpoint = new_notify_endpoint
311
- @session_endpoint = new_session_endpoint
551
+ self.endpoints = EndpointConfiguration.new(new_notify_endpoint, new_session_endpoint)
552
+ end
553
+
554
+ def endpoints=(endpoint_configuration)
555
+ result = EndpointValidator.validate(endpoint_configuration)
556
+
557
+ if result.valid?
558
+ @enable_events = true
559
+ @enable_sessions = true
560
+ else
561
+ warn(result.reason)
562
+
563
+ @enable_events = result.keep_events_enabled_for_backwards_compatibility?
564
+ @enable_sessions = false
565
+ end
566
+
567
+ # use the given endpoints even if they are invalid
568
+ @endpoints = endpoint_configuration
312
569
  end
313
570
 
314
571
  ##
315
- # Disables session tracking and delivery. Cannot be undone
572
+ # Disables session tracking and delivery. Cannot be undone
573
+ #
574
+ # @return [void]
316
575
  def disable_sessions
317
576
  self.auto_capture_sessions = false
318
577
  @enable_sessions = false
319
578
  end
320
579
 
580
+ ##
581
+ # Add the given block to the list of on_error callbacks
582
+ #
583
+ # The on_error callbacks will be called when an error is captured or reported
584
+ # and are passed a {Bugsnag::Report} object
585
+ #
586
+ # Returning false from an on_error callback will cause the error to be ignored
587
+ # and will prevent any remaining callbacks from being called
588
+ #
589
+ # @return [void]
590
+ def on_error(&block)
591
+ middleware.use(block)
592
+ end
593
+
321
594
  ##
322
595
  # Add the given callback to the list of on_error callbacks
323
596
  #
@@ -327,7 +600,7 @@ module Bugsnag
327
600
  # Returning false from an on_error callback will cause the error to be ignored
328
601
  # and will prevent any remaining callbacks from being called
329
602
  #
330
- # @param callback [Proc]
603
+ # @param callback [Proc, Method, #call]
331
604
  # @return [void]
332
605
  def add_on_error(callback)
333
606
  middleware.use(callback)
@@ -336,15 +609,140 @@ module Bugsnag
336
609
  ##
337
610
  # Remove the given callback from the list of on_error callbacks
338
611
  #
339
- # Note that this must be the same Proc instance that was passed to
612
+ # Note that this must be the same instance that was passed to
340
613
  # {#add_on_error}, otherwise it will not be removed
341
614
  #
342
- # @param callback [Proc]
615
+ # @param callback [Proc, Method, #call]
343
616
  # @return [void]
344
617
  def remove_on_error(callback)
345
618
  middleware.remove(callback)
346
619
  end
347
620
 
621
+ ##
622
+ # Add the given callback to the list of on_breadcrumb callbacks
623
+ #
624
+ # The on_breadcrumb callbacks will be called when a breadcrumb is left and
625
+ # are passed the {Breadcrumbs::Breadcrumb Breadcrumb} object
626
+ #
627
+ # Returning false from an on_breadcrumb callback will cause the breadcrumb
628
+ # to be ignored and will prevent any remaining callbacks from being called
629
+ #
630
+ # @param callback [Proc, Method, #call]
631
+ # @return [void]
632
+ def add_on_breadcrumb(callback)
633
+ @on_breadcrumb_callbacks.add(callback)
634
+ end
635
+
636
+ ##
637
+ # Remove the given callback from the list of on_breadcrumb callbacks
638
+ #
639
+ # Note that this must be the same instance that was passed to
640
+ # {add_on_breadcrumb}, otherwise it will not be removed
641
+ #
642
+ # @param callback [Proc, Method, #call]
643
+ # @return [void]
644
+ def remove_on_breadcrumb(callback)
645
+ @on_breadcrumb_callbacks.remove(callback)
646
+ end
647
+
648
+ ##
649
+ # Add values to metadata
650
+ #
651
+ # @overload add_metadata(section, data)
652
+ # Merges data into the given section of metadata
653
+ # @param section [String, Symbol]
654
+ # @param data [Hash]
655
+ #
656
+ # @overload add_metadata(section, key, value)
657
+ # Sets key to value in the given section of metadata. If the value is nil
658
+ # the key will be deleted
659
+ # @param section [String, Symbol]
660
+ # @param key [String, Symbol]
661
+ # @param value
662
+ #
663
+ # @return [void]
664
+ def add_metadata(section, key_or_data, *args)
665
+ @mutex.synchronize do
666
+ @metadata_delegate.add_metadata(@metadata, section, key_or_data, *args)
667
+ end
668
+ end
669
+
670
+ ##
671
+ # Clear values from metadata
672
+ #
673
+ # @overload clear_metadata(section)
674
+ # Clears the given section of metadata
675
+ # @param section [String, Symbol]
676
+ #
677
+ # @overload clear_metadata(section, key)
678
+ # Clears the key in the given section of metadata
679
+ # @param section [String, Symbol]
680
+ # @param key [String, Symbol]
681
+ #
682
+ # @return [void]
683
+ def clear_metadata(section, *args)
684
+ @mutex.synchronize do
685
+ @metadata_delegate.clear_metadata(@metadata, section, *args)
686
+ end
687
+ end
688
+
689
+ ##
690
+ # Has the context been explicitly set?
691
+ #
692
+ # This is necessary to differentiate between the context not being set and
693
+ # the context being set to 'nil' explicitly
694
+ #
695
+ # @api private
696
+ # @return [Boolean]
697
+ def context_set?
698
+ defined?(@context) != nil
699
+ end
700
+
701
+ # TODO: These methods can be a simple attr_accessor when they replace the
702
+ # methods they are aliasing
703
+ # NOTE: they are not aliases as YARD doesn't allow documenting the non-alias
704
+ # as deprecated without also marking the alias as deprecated
705
+
706
+ # A list of which release stages should cause notifications to be sent
707
+ # @!attribute enabled_release_stages
708
+ # @return [Array<String>, nil]
709
+ def enabled_release_stages
710
+ @notify_release_stages
711
+ end
712
+
713
+ # @param release_stages [Array<String>, nil]
714
+ # @return [void]
715
+ def enabled_release_stages=(release_stages)
716
+ @notify_release_stages = release_stages
717
+ end
718
+
719
+ # A list of breadcrumb types that Bugsnag will collect automatically
720
+ # @!attribute enabled_breadcrumb_types
721
+ # @see Bugsnag::BreadcrumbType
722
+ # @return [Array<String>]
723
+ def enabled_breadcrumb_types
724
+ @enabled_automatic_breadcrumb_types
725
+ end
726
+
727
+ # @param breadcrumb_types [Array<String>]
728
+ # @return [void]
729
+ def enabled_breadcrumb_types=(breadcrumb_types)
730
+ @enabled_automatic_breadcrumb_types = breadcrumb_types
731
+ end
732
+
733
+ # Whether sessions should be tracked automatically
734
+ # @!attribute auto_track_sessions
735
+ # @return [Boolean]
736
+ def auto_track_sessions
737
+ @auto_capture_sessions
738
+ end
739
+
740
+ # @param track_sessions [Boolean]
741
+ # @return [void]
742
+ def auto_track_sessions=(track_sessions)
743
+ @auto_capture_sessions = track_sessions
744
+ end
745
+
348
746
  private
349
747
 
350
748
  attr_writer :scopes_to_filter