exception_notification 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +2 -2
  3. data/CHANGELOG.rdoc +14 -0
  4. data/CONTRIBUTING.md +18 -0
  5. data/Gemfile +1 -1
  6. data/README.md +64 -935
  7. data/Rakefile +2 -2
  8. data/docs/notifiers/campfire.md +50 -0
  9. data/docs/notifiers/custom.md +42 -0
  10. data/docs/notifiers/datadog.md +51 -0
  11. data/docs/notifiers/email.md +195 -0
  12. data/docs/notifiers/google_chat.md +31 -0
  13. data/docs/notifiers/hipchat.md +66 -0
  14. data/docs/notifiers/irc.md +97 -0
  15. data/docs/notifiers/mattermost.md +115 -0
  16. data/docs/notifiers/slack.md +161 -0
  17. data/docs/notifiers/sns.md +37 -0
  18. data/docs/notifiers/teams.md +54 -0
  19. data/docs/notifiers/webhook.md +60 -0
  20. data/examples/sample_app.rb +54 -0
  21. data/examples/sinatra/Gemfile +6 -6
  22. data/examples/sinatra/config.ru +1 -1
  23. data/examples/sinatra/sinatra_app.rb +14 -10
  24. data/exception_notification.gemspec +27 -22
  25. data/gemfiles/rails4_0.gemfile +3 -3
  26. data/gemfiles/rails4_1.gemfile +3 -3
  27. data/gemfiles/rails4_2.gemfile +3 -3
  28. data/gemfiles/rails5_0.gemfile +3 -3
  29. data/gemfiles/rails5_1.gemfile +3 -3
  30. data/gemfiles/rails5_2.gemfile +7 -0
  31. data/gemfiles/rails6_0.gemfile +7 -0
  32. data/lib/exception_notification.rb +1 -0
  33. data/lib/exception_notification/rack.rb +8 -21
  34. data/lib/exception_notification/resque.rb +8 -10
  35. data/lib/exception_notification/sidekiq.rb +8 -12
  36. data/lib/exception_notification/version.rb +3 -0
  37. data/lib/exception_notifier.rb +20 -3
  38. data/lib/exception_notifier/base_notifier.rb +2 -3
  39. data/lib/exception_notifier/campfire_notifier.rb +12 -13
  40. data/lib/exception_notifier/datadog_notifier.rb +153 -0
  41. data/lib/exception_notifier/email_notifier.rb +64 -87
  42. data/lib/exception_notifier/google_chat_notifier.rb +25 -119
  43. data/lib/exception_notifier/hipchat_notifier.rb +11 -12
  44. data/lib/exception_notifier/irc_notifier.rb +32 -30
  45. data/lib/exception_notifier/mattermost_notifier.rb +47 -140
  46. data/lib/exception_notifier/modules/backtrace_cleaner.rb +0 -2
  47. data/lib/exception_notifier/modules/error_grouping.rb +5 -5
  48. data/lib/exception_notifier/modules/formatter.rb +118 -0
  49. data/lib/exception_notifier/notifier.rb +5 -6
  50. data/lib/exception_notifier/slack_notifier.rb +63 -40
  51. data/lib/exception_notifier/sns_notifier.rb +17 -11
  52. data/lib/exception_notifier/teams_notifier.rb +58 -44
  53. data/lib/exception_notifier/views/exception_notifier/_backtrace.html.erb +1 -1
  54. data/lib/exception_notifier/views/exception_notifier/_environment.text.erb +1 -1
  55. data/lib/exception_notifier/views/exception_notifier/_request.text.erb +1 -1
  56. data/lib/exception_notifier/views/exception_notifier/exception_notification.html.erb +2 -2
  57. data/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb +2 -2
  58. data/lib/exception_notifier/webhook_notifier.rb +14 -11
  59. data/lib/generators/exception_notification/install_generator.rb +5 -5
  60. data/lib/generators/exception_notification/templates/{exception_notification.rb → exception_notification.rb.erb} +13 -11
  61. data/test/exception_notification/rack_test.rb +27 -11
  62. data/test/exception_notification/resque_test.rb +52 -0
  63. data/test/exception_notifier/campfire_notifier_test.rb +42 -42
  64. data/test/exception_notifier/datadog_notifier_test.rb +151 -0
  65. data/test/exception_notifier/email_notifier_test.rb +269 -153
  66. data/test/exception_notifier/google_chat_notifier_test.rb +154 -101
  67. data/test/exception_notifier/hipchat_notifier_test.rb +78 -81
  68. data/test/exception_notifier/irc_notifier_test.rb +34 -34
  69. data/test/exception_notifier/mattermost_notifier_test.rb +164 -67
  70. data/test/exception_notifier/modules/error_grouping_test.rb +39 -40
  71. data/test/exception_notifier/modules/formatter_test.rb +150 -0
  72. data/test/exception_notifier/sidekiq_test.rb +6 -6
  73. data/test/exception_notifier/slack_notifier_test.rb +61 -60
  74. data/test/exception_notifier/sns_notifier_test.rb +27 -32
  75. data/test/exception_notifier/teams_notifier_test.rb +23 -26
  76. data/test/exception_notifier/webhook_notifier_test.rb +48 -46
  77. data/test/exception_notifier_test.rb +41 -38
  78. data/test/{dummy/app → support}/views/exception_notifier/_new_bkg_section.html.erb +0 -0
  79. data/test/{dummy/app → support}/views/exception_notifier/_new_bkg_section.text.erb +0 -0
  80. data/test/{dummy/app → support}/views/exception_notifier/_new_section.html.erb +0 -0
  81. data/test/{dummy/app → support}/views/exception_notifier/_new_section.text.erb +0 -0
  82. data/test/test_helper.rb +11 -14
  83. metadata +136 -166
  84. data/test/dummy/.gitignore +0 -4
  85. data/test/dummy/Rakefile +0 -7
  86. data/test/dummy/app/controllers/application_controller.rb +0 -3
  87. data/test/dummy/app/controllers/posts_controller.rb +0 -30
  88. data/test/dummy/app/helpers/application_helper.rb +0 -2
  89. data/test/dummy/app/helpers/posts_helper.rb +0 -2
  90. data/test/dummy/app/models/post.rb +0 -2
  91. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  92. data/test/dummy/app/views/posts/_form.html.erb +0 -0
  93. data/test/dummy/app/views/posts/new.html.erb +0 -0
  94. data/test/dummy/app/views/posts/show.html.erb +0 -0
  95. data/test/dummy/config.ru +0 -4
  96. data/test/dummy/config/application.rb +0 -42
  97. data/test/dummy/config/boot.rb +0 -6
  98. data/test/dummy/config/database.yml +0 -22
  99. data/test/dummy/config/environment.rb +0 -17
  100. data/test/dummy/config/environments/development.rb +0 -25
  101. data/test/dummy/config/environments/production.rb +0 -50
  102. data/test/dummy/config/environments/test.rb +0 -35
  103. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  104. data/test/dummy/config/initializers/inflections.rb +0 -10
  105. data/test/dummy/config/initializers/mime_types.rb +0 -5
  106. data/test/dummy/config/initializers/secret_token.rb +0 -8
  107. data/test/dummy/config/initializers/session_store.rb +0 -8
  108. data/test/dummy/config/locales/en.yml +0 -5
  109. data/test/dummy/config/routes.rb +0 -3
  110. data/test/dummy/db/migrate/20110729022608_create_posts.rb +0 -15
  111. data/test/dummy/db/schema.rb +0 -24
  112. data/test/dummy/db/seeds.rb +0 -7
  113. data/test/dummy/lib/tasks/.gitkeep +0 -0
  114. data/test/dummy/public/404.html +0 -26
  115. data/test/dummy/public/422.html +0 -26
  116. data/test/dummy/public/500.html +0 -26
  117. data/test/dummy/public/favicon.ico +0 -0
  118. data/test/dummy/public/images/rails.png +0 -0
  119. data/test/dummy/public/index.html +0 -239
  120. data/test/dummy/public/javascripts/application.js +0 -2
  121. data/test/dummy/public/javascripts/controls.js +0 -965
  122. data/test/dummy/public/javascripts/dragdrop.js +0 -974
  123. data/test/dummy/public/javascripts/effects.js +0 -1123
  124. data/test/dummy/public/javascripts/prototype.js +0 -6001
  125. data/test/dummy/public/javascripts/rails.js +0 -191
  126. data/test/dummy/public/robots.txt +0 -5
  127. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  128. data/test/dummy/public/stylesheets/scaffold.css +0 -56
  129. data/test/dummy/script/rails +0 -6
  130. data/test/dummy/test/functional/posts_controller_test.rb +0 -237
  131. data/test/dummy/test/test_helper.rb +0 -7
@@ -0,0 +1,60 @@
1
+ ### WebHook notifier
2
+
3
+ This notifier ships notifications over the HTTP protocol.
4
+
5
+ #### Usage
6
+
7
+ Just add the [HTTParty](https://github.com/jnunemaker/httparty) gem to your `Gemfile`:
8
+
9
+ ```ruby
10
+ gem 'httparty'
11
+ ```
12
+
13
+ To configure it, you need to set the `url` option, like this:
14
+
15
+ ```ruby
16
+ Rails.application.config.middleware.use ExceptionNotification::Rack,
17
+ email: {
18
+ email_prefix: '[PREFIX] ',
19
+ sender_address: %{"notifier" <notifier@example.com>},
20
+ exception_recipients: %w{exceptions@example.com}
21
+ },
22
+ webhook: {
23
+ url: 'http://domain.com:5555/hubot/path'
24
+ }
25
+ ```
26
+
27
+ By default, the WebhookNotifier will call the URLs using the POST method. But, you can change this using the `http_method` option.
28
+
29
+ ```ruby
30
+ Rails.application.config.middleware.use ExceptionNotification::Rack,
31
+ email: {
32
+ email_prefix: '[PREFIX] ',
33
+ sender_address: %{"notifier" <notifier@example.com>},
34
+ exception_recipients: %w{exceptions@example.com}
35
+ },
36
+ webhook: {
37
+ url: 'http://domain.com:5555/hubot/path',
38
+ http_method: :get
39
+ }
40
+ ```
41
+
42
+ Besides the `url` and `http_method` options, all the other options are passed directly to HTTParty. Thus, if the HTTP server requires authentication, you can include the following options:
43
+
44
+ ```ruby
45
+ Rails.application.config.middleware.use ExceptionNotification::Rack,
46
+ email: {
47
+ email_prefix: '[PREFIX] ',
48
+ sender_address: %{"notifier" <notifier@example.com>},
49
+ exception_recipients: %w{exceptions@example.com}
50
+ },
51
+ webhook: {
52
+ url: 'http://domain.com:5555/hubot/path',
53
+ basic_auth: {
54
+ username: 'alice',
55
+ password: 'password'
56
+ }
57
+ }
58
+ ```
59
+
60
+ For more HTTParty options, check out the [documentation](https://github.com/jnunemaker/httparty).
@@ -0,0 +1,54 @@
1
+ # -------------------------------------------
2
+ # To run the application: ruby examples/sample_app.rb
3
+ # -------------------------------------------
4
+
5
+ require 'bundler/inline'
6
+
7
+ gemfile do
8
+ source 'https://rubygems.org'
9
+
10
+ gem 'rails', '5.0.0'
11
+ gem 'exception_notification', '4.3.0'
12
+ gem 'httparty', '0.15.7'
13
+ end
14
+
15
+ class SampleApp < Rails::Application
16
+ config.middleware.use ExceptionNotification::Rack,
17
+ webhook: {
18
+ url: 'http://example.com'
19
+ }
20
+
21
+ config.secret_key_base = 'my secret key base'
22
+
23
+ Rails.logger = Logger.new($stdout)
24
+
25
+ routes.draw do
26
+ get '/', to: 'exceptions#index'
27
+ end
28
+ end
29
+
30
+ require 'action_controller/railtie'
31
+
32
+ class ExceptionsController < ActionController::Base
33
+ def index
34
+ raise 'Sample exception raised, you should receive a notification!'
35
+ end
36
+ end
37
+
38
+ require 'minitest/autorun'
39
+
40
+ class Test < Minitest::Test
41
+ include Rack::Test::Methods
42
+
43
+ def test_raise_exception
44
+ get '/'
45
+
46
+ assert last_response.server_error?
47
+ end
48
+
49
+ private
50
+
51
+ def app
52
+ Rails.application
53
+ end
54
+ end
@@ -1,8 +1,8 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "exception_notification", path: "../../"
3
+ gem 'exception_notification', path: '../../'
4
4
 
5
- gem "thin", "~> 1.5.1"
6
- gem "sinatra", "~> 1.3.5"
7
- gem "foreman"
8
- gem "mailcatcher"
5
+ gem 'foreman'
6
+ gem 'mailcatcher'
7
+ gem 'sinatra', '~> 1.3.5'
8
+ gem 'thin', '~> 1.5.1'
@@ -1,3 +1,3 @@
1
- require ::File.expand_path('../sinatra_app', __FILE__)
1
+ require ::File.expand_path('../sinatra_app', __FILE__)
2
2
 
3
3
  run SinatraApp
@@ -5,27 +5,31 @@ require 'exception_notification'
5
5
 
6
6
  class SinatraApp < Sinatra::Base
7
7
  use Rack::Config do |env|
8
- env["action_dispatch.parameter_filter"] = [:password] # This is highly recommended. It will prevent the ExceptionNotification email from including your users' passwords
8
+ env['action_dispatch.parameter_filter'] = [:password] # This is highly recommended. It will prevent the ExceptionNotification email from including your users' passwords
9
9
  end
10
10
 
11
11
  use ExceptionNotification::Rack,
12
- :email => {
13
- :email_prefix => "[Example] ",
14
- :sender_address => %{"notifier" <notifier@example.com>},
15
- :exception_recipients => %w{exceptions@example.com},
16
- :smtp_settings => { :address => "localhost", :port => 1025 }
17
- }
12
+ email: {
13
+ email_prefix: '[Example] ',
14
+ sender_address: %("notifier" <notifier@example.com>),
15
+ exception_recipients: %w[exceptions@example.com],
16
+ smtp_settings: {
17
+ address: 'localhost',
18
+ port: 1025
19
+ }
20
+ }
18
21
 
19
22
  get '/' do
20
23
  raise StandardError, "ERROR: #{params[:error]}" unless params[:error].blank?
24
+
21
25
  'Everything is fine! Now, lets break things clicking <a href="/?error=ops"> here </a>. Dont forget to see the emails at <a href="http://localhost:1080">mailcatcher</a> !'
22
26
  end
23
27
 
24
28
  get '/background_notification' do
25
29
  begin
26
- 1/0
27
- rescue Exception => e
28
- ExceptionNotifier.notify_exception(e, :data => {:msg => "Cannot divide by zero!"})
30
+ 1 / 0
31
+ rescue StandardError => e
32
+ ExceptionNotifier.notify_exception(e, data: { msg: 'Cannot divide by zero!' })
29
33
  end
30
34
  'Check email at <a href="http://localhost:1080">mailcatcher</a>.'
31
35
  end
@@ -1,12 +1,14 @@
1
+ require File.expand_path('../lib/exception_notification/version', __FILE__)
2
+
1
3
  Gem::Specification.new do |s|
2
4
  s.name = 'exception_notification'
3
- s.version = '4.3.0'
4
- s.authors = ["Jamis Buck", "Josh Peek"]
5
- s.date = %q{2018-11-22}
6
- s.summary = "Exception notification for Rails apps"
7
- s.homepage = "https://smartinez87.github.io/exception_notification/"
8
- s.email = "smartinez87@gmail.com"
9
- s.license = "MIT"
5
+ s.version = ExceptionNotification::VERSION
6
+ s.authors = ['Jamis Buck', 'Josh Peek']
7
+ s.date = '2019-08-16'
8
+ s.summary = 'Exception notification for Rails apps'
9
+ s.homepage = 'https://smartinez87.github.io/exception_notification/'
10
+ s.email = 'smartinez87@gmail.com'
11
+ s.license = 'MIT'
10
12
 
11
13
  s.required_ruby_version = '>= 2.0'
12
14
  s.required_rubygems_version = '>= 1.8.11'
@@ -16,21 +18,24 @@ Gem::Specification.new do |s|
16
18
  s.test_files = `git ls-files -- test`.split("\n")
17
19
  s.require_path = 'lib'
18
20
 
19
- s.add_dependency("actionmailer", ">= 4.0", "< 6")
20
- s.add_dependency("activesupport", ">= 4.0", "< 6")
21
+ s.add_dependency('actionmailer', '>= 4.0', '< 7')
22
+ s.add_dependency('activesupport', '>= 4.0', '< 7')
21
23
 
22
- s.add_development_dependency "rails", ">= 4.0", "< 6"
23
- s.add_development_dependency "resque", "~> 1.2.0"
24
+ s.add_development_dependency 'appraisal', '~> 2.2.0'
25
+ s.add_development_dependency 'aws-sdk-sns', '~> 1'
26
+ s.add_development_dependency 'carrier-pigeon', '>= 0.7.0'
27
+ s.add_development_dependency 'coveralls', '~> 0.8.2'
28
+ s.add_development_dependency 'dogapi', '>= 1.23.0'
29
+ s.add_development_dependency 'hipchat', '>= 1.0.0'
30
+ s.add_development_dependency 'httparty', '~> 0.10.2'
31
+ s.add_development_dependency 'mock_redis', '~> 0.18.0'
32
+ s.add_development_dependency 'mocha', '>= 0.13.0'
33
+ s.add_development_dependency 'rails', '>= 4.0', '< 7'
34
+ s.add_development_dependency 'resque', '~> 1.8.0'
35
+ s.add_development_dependency 'rubocop', '0.50.0'
24
36
  # Sidekiq 3.2.2 does not support Ruby 1.9.
25
- s.add_development_dependency "sidekiq", "~> 3.0.0", "< 3.2.2"
26
- s.add_development_dependency "tinder", "~> 1.8"
27
- s.add_development_dependency "httparty", "~> 0.10.2"
28
- s.add_development_dependency "mocha", ">= 0.13.0"
29
- s.add_development_dependency "sqlite3", ">= 1.3.4"
30
- s.add_development_dependency "coveralls", "~> 0.8.2"
31
- s.add_development_dependency "appraisal", "~> 2.0.0"
32
- s.add_development_dependency "hipchat", ">= 1.0.0"
33
- s.add_development_dependency "carrier-pigeon", ">= 0.7.0"
34
- s.add_development_dependency "slack-notifier", ">= 1.0.0"
35
- s.add_development_dependency "aws-sdk-sns", "~> 1"
37
+ s.add_development_dependency 'sidekiq', '~> 3.0.0', '< 3.2.2'
38
+ s.add_development_dependency 'slack-notifier', '>= 1.0.0'
39
+ s.add_development_dependency 'timecop', '~>0.9.0'
40
+ s.add_development_dependency 'tinder', '~> 1.8'
36
41
  end
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- gem "rails", "~> 4.0.5"
5
+ gem 'rails', '~> 4.0.5'
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: '../'
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- gem "rails", "~> 4.1.1"
5
+ gem 'rails', '~> 4.1.1'
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: '../'
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- gem "rails", "~> 4.2.0"
5
+ gem 'rails', '~> 4.2.0'
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: '../'
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- gem "rails", "~> 5.0.0"
5
+ gem 'rails', '~> 5.0.0'
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: '../'
@@ -1,7 +1,7 @@
1
1
  # This file was generated by Appraisal
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
- gem "rails", "~> 5.1.0"
5
+ gem 'rails', '~> 5.1.0'
6
6
 
7
- gemspec :path => "../"
7
+ gemspec path: '../'
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rails', '~> 5.2.0'
6
+
7
+ gemspec path: '../'
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 6.0.0"
6
+
7
+ gemspec path: "../"
@@ -1,5 +1,6 @@
1
1
  require 'exception_notifier'
2
2
  require 'exception_notification/rack'
3
+ require 'exception_notification/version'
3
4
 
4
5
  module ExceptionNotification
5
6
  # Alternative way to setup ExceptionNotification.
@@ -1,6 +1,6 @@
1
1
  module ExceptionNotification
2
2
  class Rack
3
- class CascadePassException < Exception; end
3
+ class CascadePassException < RuntimeError; end
4
4
 
5
5
  def initialize(app, options = {})
6
6
  @app = app
@@ -12,7 +12,7 @@ module ExceptionNotification
12
12
 
13
13
  if options.key?(:error_grouping_cache)
14
14
  ExceptionNotifier.error_grouping_cache = options.delete(:error_grouping_cache)
15
- elsif defined?(Rails)
15
+ elsif defined?(Rails) && Rails.respond_to?(:cache)
16
16
  ExceptionNotifier.error_grouping_cache = Rails.cache
17
17
  end
18
18
 
@@ -23,12 +23,7 @@ module ExceptionNotification
23
23
  end
24
24
  end
25
25
 
26
- if options.key?(:ignore_crawlers)
27
- ignore_crawlers = options.delete(:ignore_crawlers)
28
- ExceptionNotifier.ignore_if do |exception, opts|
29
- opts.key?(:env) && from_crawler(opts[:env], ignore_crawlers)
30
- end
31
- end
26
+ ExceptionNotifier.ignore_crawlers(options.delete(:ignore_crawlers)) if options.key?(:ignore_crawlers)
32
27
 
33
28
  @ignore_cascade_pass = options.delete(:ignore_cascade_pass) { true }
34
29
 
@@ -38,31 +33,23 @@ module ExceptionNotification
38
33
  end
39
34
 
40
35
  def call(env)
41
- _, headers, _ = response = @app.call(env)
36
+ _, headers, = response = @app.call(env)
42
37
 
43
38
  if !@ignore_cascade_pass && headers['X-Cascade'] == 'pass'
44
- msg = "This exception means that the preceding Rack middleware set the 'X-Cascade' header to 'pass' -- in " <<
45
- "Rails, this often means that the route was not found (404 error)."
39
+ msg = "This exception means that the preceding Rack middleware set the 'X-Cascade' header to 'pass' -- in " \
40
+ 'Rails, this often means that the route was not found (404 error).'
46
41
  raise CascadePassException, msg
47
42
  end
48
43
 
49
44
  response
50
45
  rescue Exception => exception
51
- if ExceptionNotifier.notify_exception(exception, :env => env)
46
+ if ExceptionNotifier.notify_exception(exception, env: env)
52
47
  env['exception_notifier.delivered'] = true
53
48
  end
54
49
 
55
50
  raise exception unless exception.is_a?(CascadePassException)
56
- response
57
- end
58
-
59
- private
60
51
 
61
- def from_crawler(env, ignored_crawlers)
62
- agent = env['HTTP_USER_AGENT']
63
- Array(ignored_crawlers).any? do |crawler|
64
- agent =~ Regexp.new(crawler)
65
- end
52
+ response
66
53
  end
67
54
  end
68
55
  end
@@ -2,23 +2,21 @@ require 'resque/failure/base'
2
2
 
3
3
  module ExceptionNotification
4
4
  class Resque < Resque::Failure::Base
5
-
6
5
  def self.count
7
- Stat[:failed]
6
+ ::Resque::Stat[:failed]
8
7
  end
9
8
 
10
9
  def save
11
10
  data = {
12
- :failed_at => Time.now.to_s,
13
- :queue => queue,
14
- :worker => worker.to_s,
15
- :payload => payload,
16
- :error_class => exception.class.name,
17
- :error_message => exception.message
11
+ error_class: exception.class.name,
12
+ error_message: exception.message,
13
+ failed_at: Time.now.to_s,
14
+ payload: payload,
15
+ queue: queue,
16
+ worker: worker.to_s
18
17
  }
19
18
 
20
- ExceptionNotifier.notify_exception(exception, :data => { :resque => data })
19
+ ExceptionNotifier.notify_exception(exception, data: { resque: data })
21
20
  end
22
-
23
21
  end
24
22
  end
@@ -3,16 +3,12 @@ require 'sidekiq'
3
3
  # Note: this class is only needed for Sidekiq version < 3.
4
4
  module ExceptionNotification
5
5
  class Sidekiq
6
-
7
- def call(worker, msg, queue)
8
- begin
9
- yield
10
- rescue Exception => exception
11
- ExceptionNotifier.notify_exception(exception, :data => { :sidekiq => msg })
12
- raise exception
13
- end
6
+ def call(_worker, msg, _queue)
7
+ yield
8
+ rescue Exception => exception
9
+ ExceptionNotifier.notify_exception(exception, data: { sidekiq: msg })
10
+ raise exception
14
11
  end
15
-
16
12
  end
17
13
  end
18
14
 
@@ -24,8 +20,8 @@ if ::Sidekiq::VERSION < '3'
24
20
  end
25
21
  else
26
22
  ::Sidekiq.configure_server do |config|
27
- config.error_handlers << Proc.new { |ex, context|
28
- ExceptionNotifier.notify_exception(ex, :data => { :sidekiq => context })
29
- }
23
+ config.error_handlers << proc do |ex, context|
24
+ ExceptionNotifier.notify_exception(ex, data: { sidekiq: context })
25
+ end
30
26
  end
31
27
  end