bugsnag 6.13.1 → 6.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (651) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +11 -0
  3. data/CHANGELOG.md +88 -0
  4. data/VERSION +1 -1
  5. data/bugsnag.gemspec +1 -1
  6. data/lib/bugsnag.rb +181 -29
  7. data/lib/bugsnag/breadcrumbs/breadcrumb.rb +1 -1
  8. data/lib/bugsnag/breadcrumbs/breadcrumbs.rb +0 -2
  9. data/lib/bugsnag/breadcrumbs/validator.rb +0 -6
  10. data/lib/bugsnag/cleaner.rb +109 -56
  11. data/lib/bugsnag/code_extractor.rb +137 -0
  12. data/lib/bugsnag/configuration.rb +226 -23
  13. data/lib/bugsnag/delivery/synchronous.rb +1 -1
  14. data/lib/bugsnag/delivery/thread_queue.rb +18 -3
  15. data/lib/bugsnag/helpers.rb +4 -6
  16. data/lib/bugsnag/integrations/delayed_job.rb +13 -1
  17. data/lib/bugsnag/integrations/mailman.rb +2 -1
  18. data/lib/bugsnag/integrations/que.rb +2 -1
  19. data/lib/bugsnag/integrations/rack.rb +3 -1
  20. data/lib/bugsnag/integrations/railtie.rb +17 -5
  21. data/lib/bugsnag/integrations/rake.rb +4 -2
  22. data/lib/bugsnag/integrations/resque.rb +12 -5
  23. data/lib/bugsnag/integrations/shoryuken.rb +2 -1
  24. data/lib/bugsnag/integrations/sidekiq.rb +1 -2
  25. data/lib/bugsnag/middleware/delayed_job.rb +1 -0
  26. data/lib/bugsnag/middleware/discard_error_class.rb +30 -0
  27. data/lib/bugsnag/middleware/ignore_error_class.rb +2 -0
  28. data/lib/bugsnag/middleware/rack_request.rb +2 -4
  29. data/lib/bugsnag/middleware_stack.rb +38 -3
  30. data/lib/bugsnag/on_error_callbacks.rb +33 -0
  31. data/lib/bugsnag/report.rb +88 -16
  32. data/lib/bugsnag/session_tracker.rb +3 -3
  33. data/lib/bugsnag/stacktrace.rb +28 -72
  34. metadata +6 -619
  35. data/.buildkite/pipeline.yml +0 -470
  36. data/.github/PULL_REQUEST_TEMPLATE.md +0 -84
  37. data/.gitignore +0 -55
  38. data/.rdoc_options +0 -27
  39. data/.rspec +0 -3
  40. data/.rubocop.yml +0 -2
  41. data/.rubocop_todo.yml +0 -679
  42. data/CONTRIBUTING.md +0 -64
  43. data/Gemfile +0 -48
  44. data/Rakefile +0 -37
  45. data/TESTING.md +0 -81
  46. data/UPGRADING.md +0 -91
  47. data/docker-compose.yml +0 -46
  48. data/dockerfiles/Dockerfile.jruby-unit-tests +0 -13
  49. data/dockerfiles/Dockerfile.ruby-maze-runner +0 -26
  50. data/dockerfiles/Dockerfile.ruby-unit-tests +0 -12
  51. data/features/.gitignore +0 -1
  52. data/features/delayed_job.feature +0 -36
  53. data/features/fixtures/delayed_job/Dockerfile +0 -15
  54. data/features/fixtures/delayed_job/app/.gitignore +0 -21
  55. data/features/fixtures/delayed_job/app/Gemfile +0 -57
  56. data/features/fixtures/delayed_job/app/README.md +0 -24
  57. data/features/fixtures/delayed_job/app/Rakefile +0 -24
  58. data/features/fixtures/delayed_job/app/app/assets/config/manifest.js +0 -3
  59. data/features/fixtures/delayed_job/app/app/assets/images/.keep +0 -0
  60. data/features/fixtures/delayed_job/app/app/assets/javascripts/application.js +0 -16
  61. data/features/fixtures/delayed_job/app/app/assets/javascripts/cable.js +0 -13
  62. data/features/fixtures/delayed_job/app/app/assets/javascripts/channels/.keep +0 -0
  63. data/features/fixtures/delayed_job/app/app/assets/stylesheets/application.css +0 -15
  64. data/features/fixtures/delayed_job/app/app/channels/application_cable/channel.rb +0 -4
  65. data/features/fixtures/delayed_job/app/app/channels/application_cable/connection.rb +0 -4
  66. data/features/fixtures/delayed_job/app/app/controllers/application_controller.rb +0 -3
  67. data/features/fixtures/delayed_job/app/app/controllers/concerns/.keep +0 -0
  68. data/features/fixtures/delayed_job/app/app/helpers/application_helper.rb +0 -2
  69. data/features/fixtures/delayed_job/app/app/jobs/application_job.rb +0 -2
  70. data/features/fixtures/delayed_job/app/app/mailers/application_mailer.rb +0 -4
  71. data/features/fixtures/delayed_job/app/app/models/application_record.rb +0 -3
  72. data/features/fixtures/delayed_job/app/app/models/concerns/.keep +0 -0
  73. data/features/fixtures/delayed_job/app/app/models/test_model.rb +0 -10
  74. data/features/fixtures/delayed_job/app/app/views/layouts/application.html.erb +0 -14
  75. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.html.erb +0 -13
  76. data/features/fixtures/delayed_job/app/app/views/layouts/mailer.text.erb +0 -1
  77. data/features/fixtures/delayed_job/app/config.ru +0 -5
  78. data/features/fixtures/delayed_job/app/config/application.rb +0 -15
  79. data/features/fixtures/delayed_job/app/config/boot.rb +0 -3
  80. data/features/fixtures/delayed_job/app/config/cable.yml +0 -9
  81. data/features/fixtures/delayed_job/app/config/database.yml +0 -25
  82. data/features/fixtures/delayed_job/app/config/environment.rb +0 -5
  83. data/features/fixtures/delayed_job/app/config/environments/development.rb +0 -54
  84. data/features/fixtures/delayed_job/app/config/environments/production.rb +0 -86
  85. data/features/fixtures/delayed_job/app/config/environments/test.rb +0 -42
  86. data/features/fixtures/delayed_job/app/config/initializers/application_controller_renderer.rb +0 -8
  87. data/features/fixtures/delayed_job/app/config/initializers/assets.rb +0 -11
  88. data/features/fixtures/delayed_job/app/config/initializers/backtrace_silencers.rb +0 -7
  89. data/features/fixtures/delayed_job/app/config/initializers/bugsnag.rb +0 -14
  90. data/features/fixtures/delayed_job/app/config/initializers/cookies_serializer.rb +0 -5
  91. data/features/fixtures/delayed_job/app/config/initializers/delayed_job.rb +0 -3
  92. data/features/fixtures/delayed_job/app/config/initializers/filter_parameter_logging.rb +0 -4
  93. data/features/fixtures/delayed_job/app/config/initializers/inflections.rb +0 -16
  94. data/features/fixtures/delayed_job/app/config/initializers/mime_types.rb +0 -4
  95. data/features/fixtures/delayed_job/app/config/initializers/new_framework_defaults.rb +0 -26
  96. data/features/fixtures/delayed_job/app/config/initializers/session_store.rb +0 -3
  97. data/features/fixtures/delayed_job/app/config/initializers/wrap_parameters.rb +0 -14
  98. data/features/fixtures/delayed_job/app/config/locales/en.yml +0 -23
  99. data/features/fixtures/delayed_job/app/config/puma.rb +0 -47
  100. data/features/fixtures/delayed_job/app/config/routes.rb +0 -3
  101. data/features/fixtures/delayed_job/app/config/secrets.yml +0 -22
  102. data/features/fixtures/delayed_job/app/config/spring.rb +0 -6
  103. data/features/fixtures/delayed_job/app/db/migrate/20181024232549_create_delayed_jobs.rb +0 -22
  104. data/features/fixtures/delayed_job/app/db/migrate/20181024232817_create_test_models.rb +0 -8
  105. data/features/fixtures/delayed_job/app/db/schema.rb +0 -30
  106. data/features/fixtures/delayed_job/app/db/seeds.rb +0 -7
  107. data/features/fixtures/delayed_job/app/lib/assets/.keep +0 -0
  108. data/features/fixtures/delayed_job/app/lib/tasks/.keep +0 -0
  109. data/features/fixtures/delayed_job/app/log/.keep +0 -0
  110. data/features/fixtures/delayed_job/app/public/404.html +0 -67
  111. data/features/fixtures/delayed_job/app/public/422.html +0 -67
  112. data/features/fixtures/delayed_job/app/public/500.html +0 -66
  113. data/features/fixtures/delayed_job/app/public/apple-touch-icon-precomposed.png +0 -0
  114. data/features/fixtures/delayed_job/app/public/apple-touch-icon.png +0 -0
  115. data/features/fixtures/delayed_job/app/public/favicon.ico +0 -0
  116. data/features/fixtures/delayed_job/app/public/robots.txt +0 -5
  117. data/features/fixtures/delayed_job/app/test/controllers/.keep +0 -0
  118. data/features/fixtures/delayed_job/app/test/fixtures/.keep +0 -0
  119. data/features/fixtures/delayed_job/app/test/fixtures/files/.keep +0 -0
  120. data/features/fixtures/delayed_job/app/test/fixtures/test_models.yml +0 -11
  121. data/features/fixtures/delayed_job/app/test/helpers/.keep +0 -0
  122. data/features/fixtures/delayed_job/app/test/integration/.keep +0 -0
  123. data/features/fixtures/delayed_job/app/test/mailers/.keep +0 -0
  124. data/features/fixtures/delayed_job/app/test/models/.keep +0 -0
  125. data/features/fixtures/delayed_job/app/test/models/test_model_test.rb +0 -7
  126. data/features/fixtures/delayed_job/app/test/test_helper.rb +0 -10
  127. data/features/fixtures/delayed_job/app/tmp/.keep +0 -0
  128. data/features/fixtures/docker-compose.yml +0 -299
  129. data/features/fixtures/expected_breadcrumbs/active_job.json +0 -9
  130. data/features/fixtures/expected_breadcrumbs/mongo_failed.json +0 -15
  131. data/features/fixtures/expected_breadcrumbs/mongo_filtered_request.json +0 -15
  132. data/features/fixtures/expected_breadcrumbs/mongo_filtered_result.json +0 -15
  133. data/features/fixtures/expected_breadcrumbs/mongo_success.json +0 -14
  134. data/features/fixtures/expected_breadcrumbs/request.json +0 -13
  135. data/features/fixtures/expected_breadcrumbs/sql_with_bindings.json +0 -12
  136. data/features/fixtures/expected_breadcrumbs/sql_without_bindings.json +0 -11
  137. data/features/fixtures/plain/.dockerignore +0 -2
  138. data/features/fixtures/plain/Dockerfile +0 -11
  139. data/features/fixtures/plain/app/Gemfile +0 -3
  140. data/features/fixtures/plain/app/app.rb +0 -38
  141. data/features/fixtures/plain/app/configuration/api_key.rb +0 -9
  142. data/features/fixtures/plain/app/configuration/proxy.rb +0 -14
  143. data/features/fixtures/plain/app/configuration/send_handled.rb +0 -7
  144. data/features/fixtures/plain/app/configuration/send_unhandled.rb +0 -9
  145. data/features/fixtures/plain/app/delivery/fork_threadpool.rb +0 -27
  146. data/features/fixtures/plain/app/delivery/synchronous.rb +0 -14
  147. data/features/fixtures/plain/app/delivery/threadpool.rb +0 -14
  148. data/features/fixtures/plain/app/exception_data/crash.rb +0 -34
  149. data/features/fixtures/plain/app/exception_data/handled_context.rb +0 -10
  150. data/features/fixtures/plain/app/exception_data/handled_hash.rb +0 -10
  151. data/features/fixtures/plain/app/exception_data/handled_meta_data.rb +0 -10
  152. data/features/fixtures/plain/app/exception_data/handled_user_id.rb +0 -10
  153. data/features/fixtures/plain/app/exception_data/unhandled_context.rb +0 -7
  154. data/features/fixtures/plain/app/exception_data/unhandled_hash.rb +0 -7
  155. data/features/fixtures/plain/app/exception_data/unhandled_meta_data.rb +0 -7
  156. data/features/fixtures/plain/app/exception_data/unhandled_user_id.rb +0 -7
  157. data/features/fixtures/plain/app/filters/additional_filters.rb +0 -11
  158. data/features/fixtures/plain/app/filters/default_filters.rb +0 -15
  159. data/features/fixtures/plain/app/handled/block_metadata.rb +0 -15
  160. data/features/fixtures/plain/app/handled/ignore_exception.rb +0 -12
  161. data/features/fixtures/plain/app/handled/notify_exception.rb +0 -9
  162. data/features/fixtures/plain/app/handled/notify_string.rb +0 -9
  163. data/features/fixtures/plain/app/ignore_classes/handled.rb +0 -8
  164. data/features/fixtures/plain/app/ignore_classes/ignore_error.rb +0 -8
  165. data/features/fixtures/plain/app/ignore_classes/unhandled.rb +0 -4
  166. data/features/fixtures/plain/app/report_modification/add_tab.rb +0 -16
  167. data/features/fixtures/plain/app/report_modification/add_tab_existing.rb +0 -22
  168. data/features/fixtures/plain/app/report_modification/add_tab_override.rb +0 -19
  169. data/features/fixtures/plain/app/report_modification/ignore_report.rb +0 -9
  170. data/features/fixtures/plain/app/report_modification/initiators/handled_before_notify.rb +0 -10
  171. data/features/fixtures/plain/app/report_modification/initiators/handled_block.rb +0 -8
  172. data/features/fixtures/plain/app/report_modification/initiators/unhandled_before_notify.rb +0 -11
  173. data/features/fixtures/plain/app/report_modification/modify_api_key.rb +0 -9
  174. data/features/fixtures/plain/app/report_modification/modify_severity.rb +0 -9
  175. data/features/fixtures/plain/app/report_modification/remove_user_details.rb +0 -14
  176. data/features/fixtures/plain/app/report_modification/set_custom_user_details.rb +0 -16
  177. data/features/fixtures/plain/app/report_modification/set_user_details.rb +0 -13
  178. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_before_notify.rb +0 -29
  179. data/features/fixtures/plain/app/stack_frame_modification/initiators/handled_block.rb +0 -24
  180. data/features/fixtures/plain/app/stack_frame_modification/initiators/unhandled_before_notify.rb +0 -26
  181. data/features/fixtures/plain/app/stack_frame_modification/mark_frames_in_project.rb +0 -13
  182. data/features/fixtures/plain/app/stack_frame_modification/remove_stack_frame.rb +0 -9
  183. data/features/fixtures/plain/app/unhandled/bad_syntax.rb +0 -1
  184. data/features/fixtures/plain/app/unhandled/custom_error.rb +0 -9
  185. data/features/fixtures/plain/app/unhandled/interrupt.rb +0 -6
  186. data/features/fixtures/plain/app/unhandled/load_error.rb +0 -6
  187. data/features/fixtures/plain/app/unhandled/local_jump_error.rb +0 -10
  188. data/features/fixtures/plain/app/unhandled/name_error.rb +0 -6
  189. data/features/fixtures/plain/app/unhandled/no_method_error.rb +0 -6
  190. data/features/fixtures/plain/app/unhandled/runtime_error.rb +0 -6
  191. data/features/fixtures/plain/app/unhandled/syntax_error.rb +0 -6
  192. data/features/fixtures/plain/app/unhandled/system_call_error.rb +0 -6
  193. data/features/fixtures/plain/app/unhandled/system_exit.rb +0 -6
  194. data/features/fixtures/plain/json/delivery_fork.json +0 -4
  195. data/features/fixtures/plain/json/delivery_synchronous.json +0 -4
  196. data/features/fixtures/plain/json/delivery_threadpool.json +0 -4
  197. data/features/fixtures/plain/json/filters_default_metadata_filters.json +0 -9
  198. data/features/fixtures/rack1/.dockerignore +0 -1
  199. data/features/fixtures/rack1/Dockerfile +0 -13
  200. data/features/fixtures/rack1/Gemfile +0 -4
  201. data/features/fixtures/rack1/app.rb +0 -8
  202. data/features/fixtures/rack2/.dockerignore +0 -1
  203. data/features/fixtures/rack2/Dockerfile +0 -13
  204. data/features/fixtures/rack2/Gemfile +0 -4
  205. data/features/fixtures/rack2/app.rb +0 -8
  206. data/features/fixtures/rails3/.dockerignore +0 -1
  207. data/features/fixtures/rails3/Dockerfile +0 -15
  208. data/features/fixtures/rails3/app/.gitignore +0 -15
  209. data/features/fixtures/rails3/app/Gemfile +0 -17
  210. data/features/fixtures/rails3/app/Rakefile +0 -7
  211. data/features/fixtures/rails3/app/app/assets/images/rails.png +0 -0
  212. data/features/fixtures/rails3/app/app/assets/javascripts/application.js +0 -15
  213. data/features/fixtures/rails3/app/app/assets/stylesheets/application.css +0 -13
  214. data/features/fixtures/rails3/app/app/controllers/api_key_controller.rb +0 -20
  215. data/features/fixtures/rails3/app/app/controllers/app_type_controller.rb +0 -20
  216. data/features/fixtures/rails3/app/app/controllers/app_version_controller.rb +0 -25
  217. data/features/fixtures/rails3/app/app/controllers/application_controller.rb +0 -7
  218. data/features/fixtures/rails3/app/app/controllers/auto_notify_controller.rb +0 -31
  219. data/features/fixtures/rails3/app/app/controllers/before_notify_controller.rb +0 -44
  220. data/features/fixtures/rails3/app/app/controllers/breadcrumbs_controller.rb +0 -19
  221. data/features/fixtures/rails3/app/app/controllers/handled_controller.rb +0 -26
  222. data/features/fixtures/rails3/app/app/controllers/ignore_classes_controller.rb +0 -23
  223. data/features/fixtures/rails3/app/app/controllers/metadata_filters_controller.rb +0 -16
  224. data/features/fixtures/rails3/app/app/controllers/project_root_controller.rb +0 -25
  225. data/features/fixtures/rails3/app/app/controllers/release_stage_controller.rb +0 -20
  226. data/features/fixtures/rails3/app/app/controllers/send_code_controller.rb +0 -20
  227. data/features/fixtures/rails3/app/app/controllers/send_environment_controller.rb +0 -12
  228. data/features/fixtures/rails3/app/app/controllers/session_tracking_controller.rb +0 -24
  229. data/features/fixtures/rails3/app/app/controllers/unhandled_controller.rb +0 -11
  230. data/features/fixtures/rails3/app/app/controllers/warden_controller.rb +0 -30
  231. data/features/fixtures/rails3/app/app/helpers/application_helper.rb +0 -2
  232. data/features/fixtures/rails3/app/app/mailers/.gitkeep +0 -0
  233. data/features/fixtures/rails3/app/app/models/.gitkeep +0 -0
  234. data/features/fixtures/rails3/app/app/models/user.rb +0 -6
  235. data/features/fixtures/rails3/app/app/views/layouts/application.html.erb +0 -14
  236. data/features/fixtures/rails3/app/config.ru +0 -4
  237. data/features/fixtures/rails3/app/config/application.rb +0 -67
  238. data/features/fixtures/rails3/app/config/boot.rb +0 -6
  239. data/features/fixtures/rails3/app/config/database.yml +0 -31
  240. data/features/fixtures/rails3/app/config/environment.rb +0 -5
  241. data/features/fixtures/rails3/app/config/environments/development.rb +0 -37
  242. data/features/fixtures/rails3/app/config/environments/production.rb +0 -67
  243. data/features/fixtures/rails3/app/config/environments/rails_env.rb +0 -37
  244. data/features/fixtures/rails3/app/config/initializers/bugsnag.rb +0 -20
  245. data/features/fixtures/rails3/app/config/initializers/secret_token.rb +0 -7
  246. data/features/fixtures/rails3/app/config/initializers/session_store.rb +0 -8
  247. data/features/fixtures/rails3/app/config/initializers/warden.rb +0 -3
  248. data/features/fixtures/rails3/app/config/initializers/wrap_parameters.rb +0 -14
  249. data/features/fixtures/rails3/app/config/locales/en.yml +0 -5
  250. data/features/fixtures/rails3/app/config/routes.rb +0 -19
  251. data/features/fixtures/rails3/app/db/migrate/20180423142727_create_users.rb +0 -45
  252. data/features/fixtures/rails3/app/db/schema.rb +0 -37
  253. data/features/fixtures/rails3/app/db/seeds.rb +0 -7
  254. data/features/fixtures/rails3/app/lib/assets/.gitkeep +0 -0
  255. data/features/fixtures/rails3/app/lib/strategies/token_strategy.rb +0 -12
  256. data/features/fixtures/rails3/app/lib/tasks/.gitkeep +0 -0
  257. data/features/fixtures/rails3/app/log/.gitkeep +0 -0
  258. data/features/fixtures/rails3/app/public/404.html +0 -26
  259. data/features/fixtures/rails3/app/public/422.html +0 -26
  260. data/features/fixtures/rails3/app/public/500.html +0 -25
  261. data/features/fixtures/rails3/app/public/favicon.ico +0 -0
  262. data/features/fixtures/rails3/app/public/index.html +0 -241
  263. data/features/fixtures/rails3/app/public/robots.txt +0 -5
  264. data/features/fixtures/rails3/app/script/rails +0 -6
  265. data/features/fixtures/rails4/.dockerignore +0 -1
  266. data/features/fixtures/rails4/Dockerfile +0 -17
  267. data/features/fixtures/rails4/app/.gitignore +0 -16
  268. data/features/fixtures/rails4/app/Gemfile +0 -46
  269. data/features/fixtures/rails4/app/README.rdoc +0 -28
  270. data/features/fixtures/rails4/app/Rakefile +0 -6
  271. data/features/fixtures/rails4/app/app/assets/images/.keep +0 -0
  272. data/features/fixtures/rails4/app/app/assets/javascripts/application.js +0 -16
  273. data/features/fixtures/rails4/app/app/assets/stylesheets/application.css +0 -13
  274. data/features/fixtures/rails4/app/app/controllers/api_key_controller.rb +0 -20
  275. data/features/fixtures/rails4/app/app/controllers/app_type_controller.rb +0 -20
  276. data/features/fixtures/rails4/app/app/controllers/app_version_controller.rb +0 -25
  277. data/features/fixtures/rails4/app/app/controllers/application_controller.rb +0 -7
  278. data/features/fixtures/rails4/app/app/controllers/auto_notify_controller.rb +0 -31
  279. data/features/fixtures/rails4/app/app/controllers/before_notify_controller.rb +0 -44
  280. data/features/fixtures/rails4/app/app/controllers/breadcrumbs_controller.rb +0 -26
  281. data/features/fixtures/rails4/app/app/controllers/concerns/.keep +0 -0
  282. data/features/fixtures/rails4/app/app/controllers/devise_controller.rb +0 -32
  283. data/features/fixtures/rails4/app/app/controllers/handled_controller.rb +0 -26
  284. data/features/fixtures/rails4/app/app/controllers/ignore_classes_controller.rb +0 -23
  285. data/features/fixtures/rails4/app/app/controllers/metadata_filters_controller.rb +0 -16
  286. data/features/fixtures/rails4/app/app/controllers/mongo_controller.rb +0 -23
  287. data/features/fixtures/rails4/app/app/controllers/project_root_controller.rb +0 -25
  288. data/features/fixtures/rails4/app/app/controllers/release_stage_controller.rb +0 -20
  289. data/features/fixtures/rails4/app/app/controllers/send_code_controller.rb +0 -20
  290. data/features/fixtures/rails4/app/app/controllers/send_environment_controller.rb +0 -12
  291. data/features/fixtures/rails4/app/app/controllers/session_tracking_controller.rb +0 -24
  292. data/features/fixtures/rails4/app/app/controllers/unhandled_controller.rb +0 -11
  293. data/features/fixtures/rails4/app/app/helpers/application_helper.rb +0 -2
  294. data/features/fixtures/rails4/app/app/jobs/application_job.rb +0 -2
  295. data/features/fixtures/rails4/app/app/jobs/notify_job.rb +0 -5
  296. data/features/fixtures/rails4/app/app/mailers/.keep +0 -0
  297. data/features/fixtures/rails4/app/app/models/.keep +0 -0
  298. data/features/fixtures/rails4/app/app/models/concerns/.keep +0 -0
  299. data/features/fixtures/rails4/app/app/models/mongo_model.rb +0 -6
  300. data/features/fixtures/rails4/app/app/models/user.rb +0 -6
  301. data/features/fixtures/rails4/app/app/views/layouts/application.html.erb +0 -14
  302. data/features/fixtures/rails4/app/config.ru +0 -4
  303. data/features/fixtures/rails4/app/config/application.rb +0 -23
  304. data/features/fixtures/rails4/app/config/boot.rb +0 -4
  305. data/features/fixtures/rails4/app/config/database.yml +0 -31
  306. data/features/fixtures/rails4/app/config/environment.rb +0 -5
  307. data/features/fixtures/rails4/app/config/environments/development.rb +0 -31
  308. data/features/fixtures/rails4/app/config/environments/production.rb +0 -81
  309. data/features/fixtures/rails4/app/config/environments/rails_env.rb +0 -30
  310. data/features/fixtures/rails4/app/config/environments/test.rb +0 -31
  311. data/features/fixtures/rails4/app/config/initializers/backtrace_silencers.rb +0 -7
  312. data/features/fixtures/rails4/app/config/initializers/bugsnag.rb +0 -20
  313. data/features/fixtures/rails4/app/config/initializers/devise.rb +0 -283
  314. data/features/fixtures/rails4/app/config/initializers/filter_parameter_logging.rb +0 -5
  315. data/features/fixtures/rails4/app/config/initializers/inflections.rb +0 -16
  316. data/features/fixtures/rails4/app/config/initializers/mime_types.rb +0 -5
  317. data/features/fixtures/rails4/app/config/initializers/secret_token.rb +0 -12
  318. data/features/fixtures/rails4/app/config/initializers/session_store.rb +0 -3
  319. data/features/fixtures/rails4/app/config/initializers/wrap_parameters.rb +0 -14
  320. data/features/fixtures/rails4/app/config/locales/devise.en.yml +0 -64
  321. data/features/fixtures/rails4/app/config/locales/en.yml +0 -23
  322. data/features/fixtures/rails4/app/config/mongoid.yml +0 -22
  323. data/features/fixtures/rails4/app/config/routes.rb +0 -21
  324. data/features/fixtures/rails4/app/db/migrate/20180420160315_devise_create_users.rb +0 -47
  325. data/features/fixtures/rails4/app/db/seeds.rb +0 -7
  326. data/features/fixtures/rails4/app/lib/assets/.keep +0 -0
  327. data/features/fixtures/rails4/app/lib/tasks/.keep +0 -0
  328. data/features/fixtures/rails4/app/log/.keep +0 -0
  329. data/features/fixtures/rails4/app/public/404.html +0 -58
  330. data/features/fixtures/rails4/app/public/422.html +0 -58
  331. data/features/fixtures/rails4/app/public/500.html +0 -57
  332. data/features/fixtures/rails4/app/public/favicon.ico +0 -0
  333. data/features/fixtures/rails4/app/public/robots.txt +0 -5
  334. data/features/fixtures/rails4/app/test/controllers/.keep +0 -0
  335. data/features/fixtures/rails4/app/test/fixtures/.keep +0 -0
  336. data/features/fixtures/rails4/app/test/helpers/.keep +0 -0
  337. data/features/fixtures/rails4/app/test/integration/.keep +0 -0
  338. data/features/fixtures/rails4/app/test/mailers/.keep +0 -0
  339. data/features/fixtures/rails4/app/test/models/.keep +0 -0
  340. data/features/fixtures/rails4/app/test/test_helper.rb +0 -15
  341. data/features/fixtures/rails5/.dockerignore +0 -1
  342. data/features/fixtures/rails5/Dockerfile +0 -17
  343. data/features/fixtures/rails5/app/.gitignore +0 -21
  344. data/features/fixtures/rails5/app/Gemfile +0 -52
  345. data/features/fixtures/rails5/app/README.md +0 -24
  346. data/features/fixtures/rails5/app/Rakefile +0 -6
  347. data/features/fixtures/rails5/app/app/assets/config/manifest.js +0 -3
  348. data/features/fixtures/rails5/app/app/assets/images/.keep +0 -0
  349. data/features/fixtures/rails5/app/app/assets/javascripts/application.js +0 -16
  350. data/features/fixtures/rails5/app/app/assets/javascripts/cable.js +0 -13
  351. data/features/fixtures/rails5/app/app/assets/javascripts/channels/.keep +0 -0
  352. data/features/fixtures/rails5/app/app/assets/stylesheets/application.css +0 -15
  353. data/features/fixtures/rails5/app/app/channels/application_cable/channel.rb +0 -4
  354. data/features/fixtures/rails5/app/app/channels/application_cable/connection.rb +0 -4
  355. data/features/fixtures/rails5/app/app/controllers/api_key_controller.rb +0 -16
  356. data/features/fixtures/rails5/app/app/controllers/app_type_controller.rb +0 -16
  357. data/features/fixtures/rails5/app/app/controllers/app_version_controller.rb +0 -21
  358. data/features/fixtures/rails5/app/app/controllers/application_controller.rb +0 -7
  359. data/features/fixtures/rails5/app/app/controllers/auto_notify_controller.rb +0 -27
  360. data/features/fixtures/rails5/app/app/controllers/before_notify_controller.rb +0 -40
  361. data/features/fixtures/rails5/app/app/controllers/breadcrumbs_controller.rb +0 -24
  362. data/features/fixtures/rails5/app/app/controllers/clearance_controller.rb +0 -33
  363. data/features/fixtures/rails5/app/app/controllers/concerns/.keep +0 -0
  364. data/features/fixtures/rails5/app/app/controllers/handled_controller.rb +0 -22
  365. data/features/fixtures/rails5/app/app/controllers/ignore_classes_controller.rb +0 -19
  366. data/features/fixtures/rails5/app/app/controllers/metadata_filters_controller.rb +0 -12
  367. data/features/fixtures/rails5/app/app/controllers/mongo_controller.rb +0 -22
  368. data/features/fixtures/rails5/app/app/controllers/project_root_controller.rb +0 -21
  369. data/features/fixtures/rails5/app/app/controllers/release_stage_controller.rb +0 -16
  370. data/features/fixtures/rails5/app/app/controllers/send_code_controller.rb +0 -16
  371. data/features/fixtures/rails5/app/app/controllers/send_environment_controller.rb +0 -8
  372. data/features/fixtures/rails5/app/app/controllers/session_tracking_controller.rb +0 -20
  373. data/features/fixtures/rails5/app/app/controllers/unhandled_controller.rb +0 -7
  374. data/features/fixtures/rails5/app/app/helpers/application_helper.rb +0 -2
  375. data/features/fixtures/rails5/app/app/jobs/application_job.rb +0 -2
  376. data/features/fixtures/rails5/app/app/jobs/notify_job.rb +0 -5
  377. data/features/fixtures/rails5/app/app/mailers/application_mailer.rb +0 -4
  378. data/features/fixtures/rails5/app/app/models/application_record.rb +0 -3
  379. data/features/fixtures/rails5/app/app/models/concerns/.keep +0 -0
  380. data/features/fixtures/rails5/app/app/models/mongo_model.rb +0 -6
  381. data/features/fixtures/rails5/app/app/models/user.rb +0 -3
  382. data/features/fixtures/rails5/app/app/views/layouts/application.html.erb +0 -14
  383. data/features/fixtures/rails5/app/app/views/layouts/mailer.html.erb +0 -13
  384. data/features/fixtures/rails5/app/app/views/layouts/mailer.text.erb +0 -1
  385. data/features/fixtures/rails5/app/config.ru +0 -5
  386. data/features/fixtures/rails5/app/config/application.rb +0 -15
  387. data/features/fixtures/rails5/app/config/boot.rb +0 -3
  388. data/features/fixtures/rails5/app/config/cable.yml +0 -9
  389. data/features/fixtures/rails5/app/config/database.yml +0 -29
  390. data/features/fixtures/rails5/app/config/environment.rb +0 -5
  391. data/features/fixtures/rails5/app/config/environments/development.rb +0 -55
  392. data/features/fixtures/rails5/app/config/environments/production.rb +0 -87
  393. data/features/fixtures/rails5/app/config/environments/rails_env.rb +0 -55
  394. data/features/fixtures/rails5/app/config/environments/test.rb +0 -55
  395. data/features/fixtures/rails5/app/config/initializers/assets.rb +0 -11
  396. data/features/fixtures/rails5/app/config/initializers/backtrace_silencers.rb +0 -7
  397. data/features/fixtures/rails5/app/config/initializers/bugsnag.rb +0 -20
  398. data/features/fixtures/rails5/app/config/initializers/clearance.rb +0 -5
  399. data/features/fixtures/rails5/app/config/initializers/cookies_serializer.rb +0 -5
  400. data/features/fixtures/rails5/app/config/initializers/filter_parameter_logging.rb +0 -5
  401. data/features/fixtures/rails5/app/config/initializers/inflections.rb +0 -16
  402. data/features/fixtures/rails5/app/config/initializers/mime_types.rb +0 -4
  403. data/features/fixtures/rails5/app/config/initializers/new_framework_defaults.rb +0 -24
  404. data/features/fixtures/rails5/app/config/initializers/session_store.rb +0 -3
  405. data/features/fixtures/rails5/app/config/initializers/wrap_parameters.rb +0 -14
  406. data/features/fixtures/rails5/app/config/locales/devise.en.yml +0 -64
  407. data/features/fixtures/rails5/app/config/locales/en.yml +0 -23
  408. data/features/fixtures/rails5/app/config/mongoid.yml +0 -23
  409. data/features/fixtures/rails5/app/config/puma.rb +0 -47
  410. data/features/fixtures/rails5/app/config/routes.rb +0 -62
  411. data/features/fixtures/rails5/app/config/secrets.yml +0 -25
  412. data/features/fixtures/rails5/app/config/spring.rb +0 -6
  413. data/features/fixtures/rails5/app/db/migrate/20180426095545_create_users.rb +0 -17
  414. data/features/fixtures/rails5/app/db/schema.rb +0 -29
  415. data/features/fixtures/rails5/app/db/seeds.rb +0 -7
  416. data/features/fixtures/rails5/app/lib/assets/.keep +0 -0
  417. data/features/fixtures/rails5/app/lib/tasks/.keep +0 -0
  418. data/features/fixtures/rails5/app/log/.keep +0 -0
  419. data/features/fixtures/rails5/app/public/404.html +0 -67
  420. data/features/fixtures/rails5/app/public/422.html +0 -67
  421. data/features/fixtures/rails5/app/public/500.html +0 -66
  422. data/features/fixtures/rails5/app/public/apple-touch-icon-precomposed.png +0 -0
  423. data/features/fixtures/rails5/app/public/apple-touch-icon.png +0 -0
  424. data/features/fixtures/rails5/app/public/favicon.ico +0 -0
  425. data/features/fixtures/rails5/app/public/robots.txt +0 -5
  426. data/features/fixtures/rails5/app/test/controllers/.keep +0 -0
  427. data/features/fixtures/rails5/app/test/fixtures/.keep +0 -0
  428. data/features/fixtures/rails5/app/test/fixtures/files/.keep +0 -0
  429. data/features/fixtures/rails5/app/test/helpers/.keep +0 -0
  430. data/features/fixtures/rails5/app/test/integration/.keep +0 -0
  431. data/features/fixtures/rails5/app/test/mailers/.keep +0 -0
  432. data/features/fixtures/rails5/app/test/models/.keep +0 -0
  433. data/features/fixtures/rails5/app/test/test_helper.rb +0 -10
  434. data/features/fixtures/rails5/app/tmp/.keep +0 -0
  435. data/features/fixtures/rails6/.dockerignore +0 -1
  436. data/features/fixtures/rails6/Dockerfile +0 -26
  437. data/features/fixtures/rails6/app/.browserslistrc +0 -1
  438. data/features/fixtures/rails6/app/.gitignore +0 -35
  439. data/features/fixtures/rails6/app/.ruby-version +0 -1
  440. data/features/fixtures/rails6/app/Gemfile +0 -58
  441. data/features/fixtures/rails6/app/README.md +0 -24
  442. data/features/fixtures/rails6/app/Rakefile +0 -6
  443. data/features/fixtures/rails6/app/app/assets/config/manifest.js +0 -2
  444. data/features/fixtures/rails6/app/app/assets/images/.keep +0 -0
  445. data/features/fixtures/rails6/app/app/assets/stylesheets/application.css +0 -15
  446. data/features/fixtures/rails6/app/app/channels/application_cable/channel.rb +0 -4
  447. data/features/fixtures/rails6/app/app/channels/application_cable/connection.rb +0 -4
  448. data/features/fixtures/rails6/app/app/controllers/api_key_controller.rb +0 -16
  449. data/features/fixtures/rails6/app/app/controllers/app_type_controller.rb +0 -16
  450. data/features/fixtures/rails6/app/app/controllers/app_version_controller.rb +0 -21
  451. data/features/fixtures/rails6/app/app/controllers/application_controller.rb +0 -7
  452. data/features/fixtures/rails6/app/app/controllers/auto_notify_controller.rb +0 -27
  453. data/features/fixtures/rails6/app/app/controllers/before_notify_controller.rb +0 -40
  454. data/features/fixtures/rails6/app/app/controllers/breadcrumbs_controller.rb +0 -24
  455. data/features/fixtures/rails6/app/app/controllers/clearance_controller.rb +0 -33
  456. data/features/fixtures/rails6/app/app/controllers/concerns/.keep +0 -0
  457. data/features/fixtures/rails6/app/app/controllers/handled_controller.rb +0 -22
  458. data/features/fixtures/rails6/app/app/controllers/ignore_classes_controller.rb +0 -19
  459. data/features/fixtures/rails6/app/app/controllers/metadata_filters_controller.rb +0 -12
  460. data/features/fixtures/rails6/app/app/controllers/mongo_controller.rb +0 -22
  461. data/features/fixtures/rails6/app/app/controllers/project_root_controller.rb +0 -21
  462. data/features/fixtures/rails6/app/app/controllers/release_stage_controller.rb +0 -16
  463. data/features/fixtures/rails6/app/app/controllers/send_code_controller.rb +0 -16
  464. data/features/fixtures/rails6/app/app/controllers/send_environment_controller.rb +0 -8
  465. data/features/fixtures/rails6/app/app/controllers/session_tracking_controller.rb +0 -20
  466. data/features/fixtures/rails6/app/app/controllers/unhandled_controller.rb +0 -7
  467. data/features/fixtures/rails6/app/app/helpers/application_helper.rb +0 -2
  468. data/features/fixtures/rails6/app/app/javascript/channels/consumer.js +0 -6
  469. data/features/fixtures/rails6/app/app/javascript/channels/index.js +0 -5
  470. data/features/fixtures/rails6/app/app/javascript/packs/application.js +0 -9
  471. data/features/fixtures/rails6/app/app/jobs/application_job.rb +0 -7
  472. data/features/fixtures/rails6/app/app/jobs/notify_job.rb +0 -5
  473. data/features/fixtures/rails6/app/app/mailers/application_mailer.rb +0 -4
  474. data/features/fixtures/rails6/app/app/models/application_record.rb +0 -3
  475. data/features/fixtures/rails6/app/app/models/concerns/.keep +0 -0
  476. data/features/fixtures/rails6/app/app/models/mongo_model.rb +0 -6
  477. data/features/fixtures/rails6/app/app/models/user.rb +0 -3
  478. data/features/fixtures/rails6/app/app/views/layouts/application.html.erb +0 -15
  479. data/features/fixtures/rails6/app/app/views/layouts/mailer.html.erb +0 -13
  480. data/features/fixtures/rails6/app/app/views/layouts/mailer.text.erb +0 -1
  481. data/features/fixtures/rails6/app/babel.config.js +0 -70
  482. data/features/fixtures/rails6/app/config.ru +0 -5
  483. data/features/fixtures/rails6/app/config/application.rb +0 -19
  484. data/features/fixtures/rails6/app/config/boot.rb +0 -4
  485. data/features/fixtures/rails6/app/config/cable.yml +0 -13
  486. data/features/fixtures/rails6/app/config/credentials.yml.enc +0 -1
  487. data/features/fixtures/rails6/app/config/database.yml +0 -29
  488. data/features/fixtures/rails6/app/config/environment.rb +0 -5
  489. data/features/fixtures/rails6/app/config/environments/development.rb +0 -64
  490. data/features/fixtures/rails6/app/config/environments/production.rb +0 -113
  491. data/features/fixtures/rails6/app/config/environments/rails_env.rb +0 -56
  492. data/features/fixtures/rails6/app/config/environments/test.rb +0 -48
  493. data/features/fixtures/rails6/app/config/initializers/application_controller_renderer.rb +0 -8
  494. data/features/fixtures/rails6/app/config/initializers/assets.rb +0 -14
  495. data/features/fixtures/rails6/app/config/initializers/backtrace_silencers.rb +0 -7
  496. data/features/fixtures/rails6/app/config/initializers/bugsnag.rb +0 -20
  497. data/features/fixtures/rails6/app/config/initializers/content_security_policy.rb +0 -27
  498. data/features/fixtures/rails6/app/config/initializers/cookies_serializer.rb +0 -5
  499. data/features/fixtures/rails6/app/config/initializers/filter_parameter_logging.rb +0 -5
  500. data/features/fixtures/rails6/app/config/initializers/inflections.rb +0 -16
  501. data/features/fixtures/rails6/app/config/initializers/mime_types.rb +0 -4
  502. data/features/fixtures/rails6/app/config/initializers/wrap_parameters.rb +0 -14
  503. data/features/fixtures/rails6/app/config/locales/en.yml +0 -33
  504. data/features/fixtures/rails6/app/config/mongoid.yml +0 -23
  505. data/features/fixtures/rails6/app/config/puma.rb +0 -35
  506. data/features/fixtures/rails6/app/config/routes.rb +0 -62
  507. data/features/fixtures/rails6/app/config/secrets.yml +0 -25
  508. data/features/fixtures/rails6/app/config/spring.rb +0 -6
  509. data/features/fixtures/rails6/app/config/storage.yml +0 -34
  510. data/features/fixtures/rails6/app/config/webpack/development.js +0 -5
  511. data/features/fixtures/rails6/app/config/webpack/environment.js +0 -3
  512. data/features/fixtures/rails6/app/config/webpack/production.js +0 -5
  513. data/features/fixtures/rails6/app/config/webpack/rails_env.js +0 -5
  514. data/features/fixtures/rails6/app/config/webpack/test.js +0 -5
  515. data/features/fixtures/rails6/app/config/webpacker.yml +0 -121
  516. data/features/fixtures/rails6/app/db/migrate/20180426095545_create_users.rb +0 -17
  517. data/features/fixtures/rails6/app/db/schema.rb +0 -29
  518. data/features/fixtures/rails6/app/db/seeds.rb +0 -7
  519. data/features/fixtures/rails6/app/lib/assets/.keep +0 -0
  520. data/features/fixtures/rails6/app/lib/tasks/.keep +0 -0
  521. data/features/fixtures/rails6/app/log/.keep +0 -0
  522. data/features/fixtures/rails6/app/package.json +0 -15
  523. data/features/fixtures/rails6/app/postcss.config.js +0 -12
  524. data/features/fixtures/rails6/app/public/404.html +0 -67
  525. data/features/fixtures/rails6/app/public/422.html +0 -67
  526. data/features/fixtures/rails6/app/public/500.html +0 -66
  527. data/features/fixtures/rails6/app/public/apple-touch-icon-precomposed.png +0 -0
  528. data/features/fixtures/rails6/app/public/apple-touch-icon.png +0 -0
  529. data/features/fixtures/rails6/app/public/favicon.ico +0 -0
  530. data/features/fixtures/rails6/app/public/robots.txt +0 -1
  531. data/features/fixtures/rails6/app/storage/.keep +0 -0
  532. data/features/fixtures/rails6/app/test/application_system_test_case.rb +0 -5
  533. data/features/fixtures/rails6/app/test/channels/application_cable/connection_test.rb +0 -11
  534. data/features/fixtures/rails6/app/test/controllers/.keep +0 -0
  535. data/features/fixtures/rails6/app/test/fixtures/.keep +0 -0
  536. data/features/fixtures/rails6/app/test/fixtures/files/.keep +0 -0
  537. data/features/fixtures/rails6/app/test/helpers/.keep +0 -0
  538. data/features/fixtures/rails6/app/test/integration/.keep +0 -0
  539. data/features/fixtures/rails6/app/test/mailers/.keep +0 -0
  540. data/features/fixtures/rails6/app/test/models/.keep +0 -0
  541. data/features/fixtures/rails6/app/test/system/.keep +0 -0
  542. data/features/fixtures/rails6/app/test/test_helper.rb +0 -13
  543. data/features/fixtures/rails6/app/tmp/.keep +0 -0
  544. data/features/fixtures/rails6/app/yarn.lock +0 -6082
  545. data/features/fixtures/resque/.dockerignore +0 -1
  546. data/features/fixtures/resque/Dockerfile +0 -14
  547. data/features/fixtures/resque/Gemfile +0 -6
  548. data/features/fixtures/resque/Rakefile +0 -4
  549. data/features/fixtures/resque/app.rb +0 -12
  550. data/features/fixtures/sidekiq/.dockerignore +0 -2
  551. data/features/fixtures/sidekiq/Dockerfile +0 -17
  552. data/features/fixtures/sidekiq/app/Gemfile +0 -7
  553. data/features/fixtures/sidekiq/app/Rakefile.rb +0 -14
  554. data/features/fixtures/sidekiq/app/app.rb +0 -35
  555. data/features/fixtures/sidekiq/app/initializers/HandledError.rb +0 -3
  556. data/features/fixtures/sidekiq/app/initializers/UnhandledError.rb +0 -3
  557. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_false.json +0 -11
  558. data/features/fixtures/sidekiq/payloads/handled_metadata_ca_true.json +0 -12
  559. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_false.json +0 -11
  560. data/features/fixtures/sidekiq/payloads/unhandled_metadata_ca_true.json +0 -12
  561. data/features/fixtures/sinatra1/.dockerignore +0 -1
  562. data/features/fixtures/sinatra1/Dockerfile +0 -13
  563. data/features/fixtures/sinatra1/Gemfile +0 -4
  564. data/features/fixtures/sinatra1/app.rb +0 -9
  565. data/features/fixtures/sinatra2/.dockerignore +0 -1
  566. data/features/fixtures/sinatra2/Dockerfile +0 -13
  567. data/features/fixtures/sinatra2/Gemfile +0 -4
  568. data/features/fixtures/sinatra2/app.rb +0 -9
  569. data/features/plain_features/add_tab.feature +0 -49
  570. data/features/plain_features/app_type.feature +0 -8
  571. data/features/plain_features/app_version.feature +0 -8
  572. data/features/plain_features/auto_notify.feature +0 -7
  573. data/features/plain_features/delivery.feature +0 -20
  574. data/features/plain_features/exception_data.feature +0 -50
  575. data/features/plain_features/filters.feature +0 -14
  576. data/features/plain_features/handled_errors.feature +0 -42
  577. data/features/plain_features/ignore_classes.feature +0 -11
  578. data/features/plain_features/ignore_report.feature +0 -12
  579. data/features/plain_features/proxies.feature +0 -25
  580. data/features/plain_features/release_stages.feature +0 -20
  581. data/features/plain_features/report_api_key.feature +0 -14
  582. data/features/plain_features/report_severity.feature +0 -15
  583. data/features/plain_features/report_stack_frames.feature +0 -49
  584. data/features/plain_features/report_user.feature +0 -45
  585. data/features/plain_features/unhandled_errors.feature +0 -33
  586. data/features/rails_features/api_key.feature +0 -15
  587. data/features/rails_features/app_type.feature +0 -24
  588. data/features/rails_features/app_version.feature +0 -26
  589. data/features/rails_features/auto_capture_sessions.feature +0 -34
  590. data/features/rails_features/auto_notify.feature +0 -41
  591. data/features/rails_features/before_notify.feature +0 -44
  592. data/features/rails_features/breadcrumbs.feature +0 -43
  593. data/features/rails_features/handled.feature +0 -42
  594. data/features/rails_features/ignore_classes.feature +0 -14
  595. data/features/rails_features/meta_data_filters.feature +0 -14
  596. data/features/rails_features/mongo_breadcrumbs.feature +0 -26
  597. data/features/rails_features/project_root.feature +0 -35
  598. data/features/rails_features/release_stage.feature +0 -27
  599. data/features/rails_features/send_code.feature +0 -18
  600. data/features/rails_features/send_environment.feature +0 -13
  601. data/features/rails_features/unhandled.feature +0 -16
  602. data/features/rails_features/user_info.feature +0 -52
  603. data/features/sidekiq.feature +0 -30
  604. data/features/steps/ruby_notifier_steps.rb +0 -75
  605. data/features/support/env.rb +0 -23
  606. data/issue_template.md +0 -48
  607. data/spec/breadcrumbs/breadcrumb_spec.rb +0 -93
  608. data/spec/breadcrumbs/validator_spec.rb +0 -201
  609. data/spec/bugsnag_spec.rb +0 -366
  610. data/spec/cleaner_spec.rb +0 -244
  611. data/spec/configuration_spec.rb +0 -441
  612. data/spec/fixtures/apps/rails-initializer-config/Gemfile +0 -9
  613. data/spec/fixtures/apps/rails-initializer-config/config.ru +0 -16
  614. data/spec/fixtures/apps/rails-initializer-config/config/initializers/bugsnag.rb +0 -3
  615. data/spec/fixtures/apps/rails-invalid-initializer-config/Gemfile +0 -9
  616. data/spec/fixtures/apps/rails-invalid-initializer-config/config.ru +0 -16
  617. data/spec/fixtures/apps/rails-invalid-initializer-config/config/initializers/bugsnag.rb +0 -3
  618. data/spec/fixtures/apps/rails-no-config/Gemfile +0 -9
  619. data/spec/fixtures/apps/rails-no-config/config.ru +0 -16
  620. data/spec/fixtures/apps/scripts/Gemfile +0 -3
  621. data/spec/fixtures/apps/scripts/configure_invalid_key.rb +0 -5
  622. data/spec/fixtures/apps/scripts/configure_key.rb +0 -5
  623. data/spec/fixtures/apps/scripts/no_config.rb +0 -3
  624. data/spec/fixtures/crashes/end_of_file.rb +0 -9
  625. data/spec/fixtures/crashes/short_file.rb +0 -1
  626. data/spec/fixtures/crashes/start_of_file.rb +0 -9
  627. data/spec/fixtures/middleware/internal_info_setter.rb +0 -11
  628. data/spec/fixtures/middleware/public_info_setter.rb +0 -11
  629. data/spec/fixtures/tasks/Rakefile +0 -26
  630. data/spec/helper_spec.rb +0 -217
  631. data/spec/integration_spec.rb +0 -107
  632. data/spec/integrations/clearance_user_spec.rb +0 -38
  633. data/spec/integrations/logger_spec.rb +0 -134
  634. data/spec/integrations/mailman_spec.rb +0 -83
  635. data/spec/integrations/mongo_spec.rb +0 -262
  636. data/spec/integrations/que_spec.rb +0 -94
  637. data/spec/integrations/rack_spec.rb +0 -230
  638. data/spec/integrations/rails3_request_spec.rb +0 -67
  639. data/spec/integrations/rake_spec.rb +0 -71
  640. data/spec/integrations/resque_spec.rb +0 -99
  641. data/spec/integrations/shoryuken_spec.rb +0 -70
  642. data/spec/integrations/sidekiq_spec.rb +0 -137
  643. data/spec/integrations/warden_user_spec.rb +0 -41
  644. data/spec/middleware/exception_meta_data_spec.rb +0 -104
  645. data/spec/middleware_spec.rb +0 -254
  646. data/spec/middleware_stack_spec.rb +0 -151
  647. data/spec/report_spec.rb +0 -1282
  648. data/spec/session_tracker_spec.rb +0 -156
  649. data/spec/spec_helper.rb +0 -86
  650. data/spec/stacktrace_spec.rb +0 -129
  651. data/spec/utility/circular_buffer_spec.rb +0 -98
@@ -58,7 +58,7 @@ module Bugsnag
58
58
  def default_headers
59
59
  {
60
60
  "Content-Type" => "application/json",
61
- "Bugsnag-Sent-At" => Time.now().utc().strftime('%Y-%m-%dT%H:%M:%S')
61
+ "Bugsnag-Sent-At" => Time.now.utc.iso8601(3)
62
62
  }
63
63
  end
64
64
  end
@@ -9,8 +9,14 @@ module Bugsnag
9
9
 
10
10
  class << self
11
11
  ##
12
- # Queues a given payload to be delivered asynchronously.
13
- def deliver(url, body, configuration, options={})
12
+ # Queues a given payload to be delivered asynchronously
13
+ #
14
+ # @param url [String]
15
+ # @param get_payload [Proc] A Proc that will return the payload.
16
+ # @param configuration [Bugsnag::Configuration]
17
+ # @param options [Hash]
18
+ # @return [void]
19
+ def serialize_and_deliver(url, get_payload, configuration, options={})
14
20
  @configuration = configuration
15
21
 
16
22
  start_once!
@@ -21,7 +27,16 @@ module Bugsnag
21
27
  end
22
28
 
23
29
  # Add delivery to the worker thread
24
- @queue.push proc { super(url, body, configuration, options) }
30
+ @queue.push(proc do
31
+ begin
32
+ payload = get_payload.call
33
+ rescue StandardError => e
34
+ configuration.warn("Notification to #{url} failed, #{e.inspect}")
35
+ configuration.warn(e.backtrace)
36
+ end
37
+
38
+ Synchronous.deliver(url, payload, configuration, options) unless payload.nil?
39
+ end)
25
40
  end
26
41
 
27
42
  private
@@ -17,12 +17,10 @@ module Bugsnag
17
17
  def self.trim_if_needed(value)
18
18
  value = "" if value.nil?
19
19
 
20
- # Sanitize object
21
- sanitized_value = Bugsnag::Cleaner.clean_object_encoding(value)
22
- return sanitized_value unless payload_too_long?(sanitized_value)
20
+ return value unless payload_too_long?(value)
23
21
 
24
22
  # Trim metadata
25
- reduced_value = trim_metadata(sanitized_value)
23
+ reduced_value = trim_metadata(value)
26
24
  return reduced_value unless payload_too_long?(reduced_value)
27
25
 
28
26
  # Trim code from stacktrace
@@ -96,11 +94,11 @@ module Bugsnag
96
94
 
97
95
  ##
98
96
  # Wrapper for trimming stacktraces
99
- def self.extract_exception(payload)
97
+ def self.extract_exception(payload, &block)
100
98
  valid_payload = payload.is_a?(Hash) && payload[:events].respond_to?(:map)
101
99
  return unless valid_payload && block_given?
102
100
  payload[:events].each do |event|
103
- event[:exceptions].each { |exception| yield exception }
101
+ event[:exceptions].each(&block)
104
102
  end
105
103
  end
106
104
 
@@ -10,11 +10,23 @@ end
10
10
  module Delayed
11
11
  module Plugins
12
12
  class Bugsnag < ::Delayed::Plugin
13
+ ##
14
+ # DelayedJob doesn't have an easy way to fetch its version, but we can use
15
+ # Gem.loaded_specs to get the version instead
16
+ def self.delayed_job_version
17
+ ::Gem.loaded_specs['delayed_job'].version.to_s
18
+ rescue StandardError
19
+ # Explicitly return nil to prevent Rubocop complaining of a suppressed exception
20
+ nil
21
+ end
22
+
13
23
  callbacks do |lifecycle|
14
24
  lifecycle.around(:invoke_job) do |job, *args, &block|
15
25
  begin
16
- ::Bugsnag.configuration.app_type = 'delayed_job'
26
+ ::Bugsnag.configuration.detected_app_type = 'delayed_job'
27
+ ::Bugsnag.configuration.runtime_versions['delayed_job'] = delayed_job_version if defined?(::Gem)
17
28
  ::Bugsnag.configuration.set_request_data(:delayed_job, job)
29
+
18
30
  block.call(job, *args)
19
31
  rescue Exception => exception
20
32
  ::Bugsnag.notify(exception, true) do |report|
@@ -11,7 +11,8 @@ module Bugsnag
11
11
 
12
12
  def initialize
13
13
  Bugsnag.configuration.internal_middleware.use(Bugsnag::Middleware::Mailman)
14
- Bugsnag.configuration.app_type = "mailman"
14
+ Bugsnag.configuration.detected_app_type = "mailman"
15
+ Bugsnag.configuration.runtime_versions["mailman"] = ::Mailman::VERSION
15
16
  end
16
17
 
17
18
  ##
@@ -37,7 +37,8 @@ if defined?(::Que)
37
37
  end
38
38
  end
39
39
 
40
- Bugsnag.configuration.app_type ||= "que"
40
+ Bugsnag.configuration.detected_app_type = "que"
41
+
41
42
  if defined?(::Que::Version)
42
43
  Bugsnag.configuration.runtime_versions["que"] = ::Que::Version
43
44
  elsif defined?(::Que::VERSION)
@@ -30,7 +30,9 @@ module Bugsnag
30
30
  config.middleware.insert_before(Bugsnag::Middleware::Callbacks, Bugsnag::Middleware::ClearanceUser) if defined?(Clearance)
31
31
 
32
32
  # Set environment data for payload
33
- config.app_type ||= "rack"
33
+ # Note we only set the detected app_type if it's not already set. This
34
+ # ensures we don't overwrite the value set by the Railtie
35
+ config.detected_app_type ||= "rack"
34
36
  config.runtime_versions["rack"] = ::Rack.release if defined?(::Rack)
35
37
  config.runtime_versions["sinatra"] = ::Sinatra::VERSION if defined?(::Sinatra)
36
38
  end
@@ -25,7 +25,7 @@ module Bugsnag
25
25
  # initializer. If not, the key will be validated in after_initialize.
26
26
  Bugsnag.configure(false) do |config|
27
27
  config.logger = ::Rails.logger
28
- config.release_stage = ENV["BUGSNAG_RELEASE_STAGE"] || ::Rails.env.to_s
28
+ config.release_stage ||= ::Rails.env.to_s
29
29
  config.project_root = ::Rails.root.to_s
30
30
  config.middleware.insert_before Bugsnag::Middleware::Callbacks, Bugsnag::Middleware::Rails3Request
31
31
  config.runtime_versions["rails"] = ::Rails::VERSION::STRING
@@ -43,7 +43,9 @@ module Bugsnag
43
43
 
44
44
  Bugsnag::Rails::DEFAULT_RAILS_BREADCRUMBS.each { |event| event_subscription(event) }
45
45
 
46
- Bugsnag.configuration.app_type = "rails"
46
+ # Make sure we don't overwrite the value set by another integration because
47
+ # Rails is a less specific app_type (e.g. Que sets this earlier than us)
48
+ Bugsnag.configuration.detected_app_type ||= "rails"
47
49
  end
48
50
 
49
51
  # Configure meta_data_filters after initialization, so that rails initializers
@@ -63,9 +65,19 @@ module Bugsnag
63
65
 
64
66
  initializer "bugsnag.use_rack_middleware" do |app|
65
67
  begin
66
- app.config.middleware.insert_after ActionDispatch::DebugExceptions, Bugsnag::Rack
67
- rescue
68
- app.config.middleware.use Bugsnag::Rack
68
+ begin
69
+ app.config.middleware.insert_after ActionDispatch::DebugExceptions, Bugsnag::Rack
70
+ rescue
71
+ app.config.middleware.use Bugsnag::Rack
72
+ end
73
+ rescue FrozenError
74
+ # This can happen when running RSpec if there is a crash after Rails has
75
+ # started booting but before we've added our middleware. If we don't ignore
76
+ # this error then the stacktrace blames Bugsnag, which isn't accurate as
77
+ # the middleware will only be frozen if an earlier error occurs
78
+ # See this comment for more info:
79
+ # https://github.com/thoughtbot/factory_bot_rails/issues/303#issuecomment-434560625
80
+ Bugsnag.configuration.warn("Unable to add Bugsnag::Rack middleware as the middleware stack is frozen")
69
81
  end
70
82
  end
71
83
 
@@ -11,7 +11,8 @@ if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.0')
11
11
 
12
12
  # Executes the rake task with Bugsnag setup with contextual data.
13
13
  def execute(args = nil)
14
- Bugsnag.configuration.app_type ||= "rake"
14
+ Bugsnag.configuration.detected_app_type = "rake"
15
+
15
16
  old_task = Bugsnag.configuration.request_data[:bugsnag_running_task]
16
17
  Bugsnag.configuration.set_request_data :bugsnag_running_task, self
17
18
  Bugsnag.configuration.runtime_versions["rake"] = ::Rake::VERSION
@@ -42,7 +43,8 @@ else
42
43
  ##
43
44
  # Executes the rake task with Bugsnag setup with contextual data.
44
45
  def execute_with_bugsnag(args=nil)
45
- Bugsnag.configuration.app_type ||= "rake"
46
+ Bugsnag.configuration.detected_app_type = "rake"
47
+
46
48
  old_task = Bugsnag.configuration.request_data[:bugsnag_running_task]
47
49
  Bugsnag.configuration.set_request_data :bugsnag_running_task, self
48
50
  Bugsnag.configuration.runtime_versions["rake"] = ::Rake::VERSION
@@ -58,16 +58,23 @@ Resque::Failure::Bugsnag = Bugsnag::Resque
58
58
  # Auto-load the failure backend
59
59
  Bugsnag::Resque.add_failure_backend
60
60
 
61
- if Resque::Worker.new(:bugsnag_fork_check).fork_per_job?
61
+ worker = Resque::Worker.new(:bugsnag_fork_check)
62
+
63
+ # If at_exit hooks are not enabled then we can't use the thread queue delivery
64
+ # method because it relies on an at_exit hook to ensure the queue is flushed
65
+ can_use_thread_queue = worker.respond_to?(:run_at_exit_hooks) && worker.run_at_exit_hooks
66
+ default_delivery_method = can_use_thread_queue ? :thread_queue : :synchronous
67
+
68
+ if worker.fork_per_job?
62
69
  Resque.after_fork do
63
- Bugsnag.configuration.app_type = "resque"
64
- Bugsnag.configuration.default_delivery_method = :synchronous
70
+ Bugsnag.configuration.detected_app_type = "resque"
71
+ Bugsnag.configuration.default_delivery_method = default_delivery_method
65
72
  Bugsnag.configuration.runtime_versions["resque"] = ::Resque::VERSION
66
73
  end
67
74
  else
68
75
  Resque.before_first_fork do
69
- Bugsnag.configuration.app_type = "resque"
70
- Bugsnag.configuration.default_delivery_method = :synchronous
76
+ Bugsnag.configuration.detected_app_type = "resque"
77
+ Bugsnag.configuration.default_delivery_method = default_delivery_method
71
78
  Bugsnag.configuration.runtime_versions["resque"] = ::Resque::VERSION
72
79
  end
73
80
  end
@@ -11,8 +11,9 @@ module Bugsnag
11
11
 
12
12
  def initialize
13
13
  Bugsnag.configure do |config|
14
- config.app_type ||= "shoryuken"
14
+ config.detected_app_type = "shoryuken"
15
15
  config.default_delivery_method = :synchronous
16
+ config.runtime_versions["shoryuken"] = ::Shoryuken::VERSION
16
17
  end
17
18
  end
18
19
 
@@ -13,8 +13,7 @@ module Bugsnag
13
13
 
14
14
  def initialize
15
15
  Bugsnag.configuration.internal_middleware.use(Bugsnag::Middleware::Sidekiq)
16
- Bugsnag.configuration.app_type = "sidekiq"
17
- Bugsnag.configuration.default_delivery_method = :synchronous
16
+ Bugsnag.configuration.detected_app_type = "sidekiq"
18
17
  Bugsnag.configuration.runtime_versions["sidekiq"] = ::Sidekiq::VERSION
19
18
  end
20
19
 
@@ -24,6 +24,7 @@ module Bugsnag::Middleware
24
24
  job_data[:active_job] = job.payload_object.job_data if job.payload_object.respond_to?(:job_data)
25
25
  payload_data = construct_job_payload(job.payload_object)
26
26
  report.context = payload_data[:display_name] if payload_data.include?(:display_name)
27
+ report.context ||= payload_data[:class] if payload_data.include?(:class)
27
28
  job_data[:payload] = payload_data
28
29
  end
29
30
 
@@ -0,0 +1,30 @@
1
+ module Bugsnag::Middleware
2
+ ##
3
+ # Determines if the exception should be ignored based on the configured
4
+ # `discard_classes`
5
+ class DiscardErrorClass
6
+ ##
7
+ # @param middleware [#call] The next middleware to call
8
+ def initialize(middleware)
9
+ @middleware = middleware
10
+ end
11
+
12
+ ##
13
+ # @param report [Report]
14
+ def call(report)
15
+ should_discard = report.raw_exceptions.any? do |ex|
16
+ report.configuration.discard_classes.any? do |to_ignore|
17
+ case to_ignore
18
+ when String then to_ignore == ex.class.name
19
+ when Regexp then to_ignore =~ ex.class.name
20
+ else false
21
+ end
22
+ end
23
+ end
24
+
25
+ report.ignore! if should_discard
26
+
27
+ @middleware.call(report)
28
+ end
29
+ end
30
+ end
@@ -2,6 +2,8 @@ module Bugsnag::Middleware
2
2
  ##
3
3
  # Determines if the exception should be ignored based on the configured
4
4
  # `ignore_classes`
5
+ #
6
+ # @deprecated Use {DiscardErrorClass} instead
5
7
  class IgnoreErrorClass
6
8
  def initialize(bugsnag)
7
9
  @bugsnag = bugsnag
@@ -28,18 +28,16 @@ module Bugsnag::Middleware
28
28
  url = "#{request.scheme}://#{request.host}"
29
29
  url << ":#{request.port}" unless [80, 443].include?(request.port)
30
30
 
31
- cleaner = Bugsnag::Cleaner.new(report.configuration.meta_data_filters)
32
-
33
31
  # If app is passed a bad URL, this code will crash attempting to clean it
34
32
  begin
35
- url << cleaner.clean_url(request.fullpath)
33
+ url << Bugsnag.cleaner.clean_url(request.fullpath)
36
34
  rescue StandardError => stde
37
35
  Bugsnag.configuration.warn "RackRequest - Rescued error while cleaning request.fullpath: #{stde}"
38
36
  end
39
37
 
40
38
  referer = nil
41
39
  begin
42
- referer = cleaner.clean_url(request.referer) if request.referer
40
+ referer = Bugsnag.cleaner.clean_url(request.referer) if request.referer
43
41
  rescue StandardError => stde
44
42
  Bugsnag.configuration.warn "RackRequest - Rescued error while cleaning request.referer: #{stde}"
45
43
  end
@@ -1,3 +1,5 @@
1
+ require "bugsnag/on_error_callbacks"
2
+
1
3
  module Bugsnag
2
4
  class MiddlewareStack
3
5
  ##
@@ -65,11 +67,26 @@ module Bugsnag
65
67
  end
66
68
  end
67
69
 
70
+ ##
71
+ # Disable the given middleware. This removes them from the list of
72
+ # middleware and ensures they cannot be added again
73
+ #
74
+ # See also {#remove}
68
75
  def disable(*middlewares)
69
76
  @mutex.synchronize do
70
77
  @disabled_middleware += middlewares
71
78
 
72
- @middlewares.delete_if {|m| @disabled_middleware.include?(m)}
79
+ @middlewares.delete_if {|m| @disabled_middleware.include?(m) }
80
+ end
81
+ end
82
+
83
+ ##
84
+ # Remove the given middleware from the list of middleware
85
+ #
86
+ # This is like {#disable} but allows the middleware to be added again
87
+ def remove(*middlewares)
88
+ @mutex.synchronize do
89
+ @middlewares.delete_if {|m| middlewares.include?(m) }
73
90
  end
74
91
  end
75
92
 
@@ -91,7 +108,7 @@ module Bugsnag
91
108
 
92
109
  begin
93
110
  # We reverse them, so we can call "call" on the first middleware
94
- middleware_procs.reverse.inject(notify_lambda) { |n,e| e.call(n) }.call(report)
111
+ middleware_procs.reverse.inject(notify_lambda) {|n, e| e.call(n) }.call(report)
95
112
  rescue StandardError => e
96
113
  # KLUDGE: Since we don't re-raise middleware exceptions, this breaks rspec
97
114
  raise if e.class.to_s == "RSpec::Expectations::ExpectationNotMetError"
@@ -107,10 +124,28 @@ module Bugsnag
107
124
  end
108
125
 
109
126
  private
127
+
128
+ ##
110
129
  # Generates a list of middleware procs that are ready to be run
111
130
  # Pass each one a reference to the next in the queue
131
+ #
132
+ # @return [Array<Proc>]
112
133
  def middleware_procs
113
- @middlewares.map{|middleware| proc { |next_middleware| middleware.new(next_middleware) } }
134
+ # Split the middleware into separate lists of Procs and Classes
135
+ procs, classes = @middlewares.partition {|middleware| middleware.is_a?(Proc) }
136
+
137
+ # Wrap the classes in a proc that, when called, news up the middleware and
138
+ # passes the next middleware in the queue
139
+ middleware_instances = classes.map do |middleware|
140
+ proc {|next_middleware| middleware.new(next_middleware) }
141
+ end
142
+
143
+ # Wrap the list of procs in a proc that, when called, wraps them in an
144
+ # 'OnErrorCallbacks' instance that also has a reference to the next middleware
145
+ wrapped_procs = proc {|next_middleware| OnErrorCallbacks.new(next_middleware, procs) }
146
+
147
+ # Return the combined middleware and wrapped procs
148
+ middleware_instances.push(wrapped_procs)
114
149
  end
115
150
  end
116
151
  end
@@ -0,0 +1,33 @@
1
+ module Bugsnag
2
+ # @api private
3
+ class OnErrorCallbacks
4
+ def initialize(next_middleware, callbacks)
5
+ @next_middleware = next_middleware
6
+ @callbacks = callbacks
7
+ end
8
+
9
+ ##
10
+ # @param report [Report]
11
+ def call(report)
12
+ @callbacks.each do |callback|
13
+ begin
14
+ should_continue = callback.call(report)
15
+ rescue StandardError => e
16
+ Bugsnag.configuration.warn("Error occurred in on_error callback: '#{e}'")
17
+ Bugsnag.configuration.warn("on_error callback stacktrace: #{e.backtrace.inspect}")
18
+ end
19
+
20
+ # If a callback returns false, we ignore the report and stop running callbacks
21
+ # Note that we explicitly check for 'false' so that callbacks don't need
22
+ # to return anything (i.e. can return 'nil') and we still continue
23
+ next unless should_continue == false
24
+
25
+ report.ignore!
26
+
27
+ break
28
+ end
29
+
30
+ @next_middleware.call(report)
31
+ end
32
+ end
33
+ end
@@ -19,24 +19,87 @@ module Bugsnag
19
19
 
20
20
  CURRENT_PAYLOAD_VERSION = "4.0"
21
21
 
22
- attr_reader :unhandled
22
+ # Whether this report is for a handled or unhandled error
23
+ # @return [Boolean]
24
+ attr_reader :unhandled
25
+
26
+ # Your Integration API Key
27
+ # @see Configuration#api_key
28
+ # @return [String, nil]
23
29
  attr_accessor :api_key
30
+
31
+ # The type of application executing the current code
32
+ # @see Configuration#app_type
33
+ # @return [String, nil]
24
34
  attr_accessor :app_type
35
+
36
+ # The current version of your application
37
+ # @return [String, nil]
25
38
  attr_accessor :app_version
39
+
40
+ # The list of breadcrumbs attached to this report
41
+ # @return [Array<Breadcrumb>]
26
42
  attr_accessor :breadcrumbs
43
+
44
+ # @api private
45
+ # @return [Configuration]
27
46
  attr_accessor :configuration
47
+
48
+ # Additional context for this report
49
+ # @return [String, nil]
28
50
  attr_accessor :context
51
+
52
+ # The delivery method that will be used for this report
53
+ # @see Configuration#delivery_method
54
+ # @return [Symbol]
29
55
  attr_accessor :delivery_method
56
+
57
+ # The list of exceptions in this report
58
+ # @return [Array<Hash>]
30
59
  attr_accessor :exceptions
60
+
61
+ # @see Configuration#hostname
62
+ # @return [String]
31
63
  attr_accessor :hostname
64
+
65
+ # @api private
66
+ # @see Configuration#runtime_versions
67
+ # @return [Hash{String => String}]
32
68
  attr_accessor :runtime_versions
69
+
70
+ # All errors with the same grouping hash will be grouped in the Bugsnag app
71
+ # @return [String]
33
72
  attr_accessor :grouping_hash
73
+
74
+ # Arbitrary metadata attached to this report
75
+ # @return [Hash]
34
76
  attr_accessor :meta_data
77
+
78
+ # The raw Exception instances for this report
79
+ # @see #exceptions
80
+ # @return [Array<Exception>]
35
81
  attr_accessor :raw_exceptions
82
+
83
+ # The current stage of the release process, e.g. 'development', production'
84
+ # @see Configuration#release_stage
85
+ # @return [String, nil]
36
86
  attr_accessor :release_stage
87
+
88
+ # The session that active when this report was generated
89
+ # @see SessionTracker#get_current_session
90
+ # @return [Hash]
37
91
  attr_accessor :session
92
+
93
+ # The severity of this report, e.g. 'error', 'warning'
94
+ # @return [String]
38
95
  attr_accessor :severity
96
+
97
+ # @api private
98
+ # @return [Hash]
39
99
  attr_accessor :severity_reason
100
+
101
+ # The current user when this report was generated
102
+ # @return [Hash]
40
103
  attr_accessor :user
41
104
 
42
105
  ##
@@ -66,6 +129,12 @@ module Bugsnag
66
129
 
67
130
  ##
68
131
  # Add a new metadata tab to this notification.
132
+ #
133
+ # @param name [String, #to_s] The name of the tab to add
134
+ # @param value [Hash, Object] The value to add to the tab. If the tab already
135
+ # exists, this will be merged with the existing values. If a Hash is not
136
+ # given, the value will be placed into the 'custom' tab
137
+ # @return [void]
69
138
  def add_tab(name, value)
70
139
  return if name.nil?
71
140
 
@@ -81,6 +150,9 @@ module Bugsnag
81
150
 
82
151
  ##
83
152
  # Removes a metadata tab from this notification.
153
+ #
154
+ # @param name [String]
155
+ # @return [void]
84
156
  def remove_tab(name)
85
157
  return if name.nil?
86
158
 
@@ -89,6 +161,8 @@ module Bugsnag
89
161
 
90
162
  ##
91
163
  # Builds and returns the exception payload for this notification.
164
+ #
165
+ # @return [Hash]
92
166
  def as_json
93
167
  # Build the payload's exception event
94
168
  payload_event = {
@@ -97,6 +171,7 @@ module Bugsnag
97
171
  releaseStage: release_stage,
98
172
  type: app_type
99
173
  },
174
+ breadcrumbs: breadcrumbs.map(&:to_h),
100
175
  context: context,
101
176
  device: {
102
177
  hostname: hostname,
@@ -104,6 +179,7 @@ module Bugsnag
104
179
  },
105
180
  exceptions: exceptions,
106
181
  groupingHash: grouping_hash,
182
+ metaData: meta_data,
107
183
  session: session,
108
184
  severity: severity,
109
185
  severityReason: severity_reason,
@@ -111,19 +187,7 @@ module Bugsnag
111
187
  user: user
112
188
  }
113
189
 
114
- # cleanup character encodings
115
- payload_event = Bugsnag::Cleaner.clean_object_encoding(payload_event)
116
-
117
- # filter out sensitive values in (and cleanup encodings) metaData
118
- filter_cleaner = Bugsnag::Cleaner.new(configuration.meta_data_filters)
119
- payload_event[:metaData] = filter_cleaner.clean_object(meta_data)
120
- payload_event[:breadcrumbs] = breadcrumbs.map do |breadcrumb|
121
- breadcrumb_hash = breadcrumb.to_h
122
- breadcrumb_hash[:metaData] = filter_cleaner.clean_object(breadcrumb_hash[:metaData])
123
- breadcrumb_hash
124
- end
125
-
126
- payload_event.reject! {|k,v| v.nil? }
190
+ payload_event.reject! {|k, v| v.nil? }
127
191
 
128
192
  # return the payload hash
129
193
  {
@@ -139,28 +203,36 @@ module Bugsnag
139
203
 
140
204
  ##
141
205
  # Returns the headers required for the notification.
206
+ #
207
+ # @return [Hash{String => String}]
142
208
  def headers
143
209
  {
144
210
  "Bugsnag-Api-Key" => api_key,
145
211
  "Bugsnag-Payload-Version" => CURRENT_PAYLOAD_VERSION,
146
- "Bugsnag-Sent-At" => Time.now().utc().strftime('%Y-%m-%dT%H:%M:%S')
212
+ "Bugsnag-Sent-At" => Time.now.utc.iso8601(3)
147
213
  }
148
214
  end
149
215
 
150
216
  ##
151
217
  # Whether this report should be ignored and not sent.
218
+ #
219
+ # @return [Boolean]
152
220
  def ignore?
153
221
  @should_ignore
154
222
  end
155
223
 
156
224
  ##
157
225
  # Data set on the configuration to be attached to every error notification.
226
+ #
227
+ # @return [Hash]
158
228
  def request_data
159
229
  configuration.request_data
160
230
  end
161
231
 
162
232
  ##
163
233
  # Tells the client this report should not be sent.
234
+ #
235
+ # @return [void]
164
236
  def ignore!
165
237
  @should_ignore = true
166
238
  end
@@ -192,7 +264,7 @@ module Bugsnag
192
264
  {
193
265
  errorClass: error_class(exception),
194
266
  message: exception.message,
195
- stacktrace: Stacktrace.new(exception.backtrace, configuration).to_a
267
+ stacktrace: Stacktrace.process(exception.backtrace, configuration)
196
268
  }
197
269
  end
198
270
  end