rusen 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +23 -0
- data/LICENSE +22 -0
- data/README.md +262 -0
- data/Rakefile +65 -0
- data/lib/rusen.rb +6 -2
- data/lib/rusen/middleware/rusen_rack.rb +13 -9
- data/lib/rusen/middleware/rusen_sidekiq.rb +19 -0
- data/lib/rusen/notification.rb +14 -6
- data/lib/rusen/notifier.rb +15 -7
- data/lib/rusen/notifiers.rb +29 -0
- data/lib/rusen/notifiers/base_notifier.rb +53 -0
- data/lib/rusen/notifiers/io_notifier.rb +17 -42
- data/lib/rusen/notifiers/log4r_notifier.rb +70 -0
- data/lib/rusen/notifiers/mail_notifier.rb +86 -0
- data/lib/rusen/notifiers/{email_notifier.rb → pony_notifier.rb} +22 -19
- data/lib/rusen/settings.rb +35 -2
- data/lib/rusen/sidekiq.rb +19 -0
- data/lib/rusen/templates/email_template.html.erb +28 -74
- data/lib/rusen/templates/io_template.txt.erb +19 -0
- data/lib/rusen/templates/log4r_template.txt.erb +19 -0
- data/lib/rusen/utils/parameter_filter.rb +68 -0
- data/lib/rusen/version.rb +3 -0
- metadata +157 -32
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 85f19290071430461d1bee9c0253d1d7031a60d7
|
4
|
+
data.tar.gz: 0b485c11d07d898a8c897db28e515964c23c3bec
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 32cd6604c8f416c84734eb675e4efed7d8fbe9755f1011ce896020f06fc6530ada42374ccb7a1fbc6e190a151160c882b152a5e5002dc64c5029d1a10f9d3bdd
|
7
|
+
data.tar.gz: 1134462504991f8f3ab70b9fd7ee7ee325521b699ad62cba46b35801cee5b1489eef4ed1f344648ead86ded2d096b4b73509fd3358defba71ed2207ce1ca5f90
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
## HEAD
|
2
|
+
- Moved presentation to templates by Adrian Gomez
|
3
|
+
- Improve specs by Adrian Gomez
|
4
|
+
- Fix default params by Adrian Gomez
|
5
|
+
- Add log4r support by Adrian Gomez
|
6
|
+
- Fix gemspec by Peter Boling
|
7
|
+
- Add LICENSE (MIT) by Peter Boling
|
8
|
+
- Make VERSION accessible from Ruby (compatible with gem-release) by Peter Boling
|
9
|
+
- Added Trvis-CI and Coveralls integration by Peter Boling
|
10
|
+
- Added Rakefile by Peter Boling
|
11
|
+
- Test against RUby 1.8.7, 1.9.2, 1.9.3, 2.0.0, and jRuby19 by Peter Boling
|
12
|
+
- Added MailNotifier (for Mail gem) by Peter Boling
|
13
|
+
- Made mail and pony gems not explicit dependencies; notifiers are loaded dynamically by Peter Boling
|
14
|
+
- Settings.outputs needs to default to [] in order for the gem to have no default dependencies by Peter Boling
|
15
|
+
|
16
|
+
## 0.0.2 (2013-01-28)
|
17
|
+
- Fix when a notificator can't notify by Adrian Gomez
|
18
|
+
- Added documentation by Adrian Gomez
|
19
|
+
- Added possibility to skip notification of certain errors by Adrian Gomez
|
20
|
+
|
21
|
+
## 0.0.1 (2013-01-28)
|
22
|
+
|
23
|
+
First release by Adrian Gomez
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Adrian Gomez
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,262 @@
|
|
1
|
+
[RU]by [S]imple [E]xception [N]otification
|
2
|
+
====
|
3
|
+
|
4
|
+
The Ruby Simple Exception Notification (a.k.a Rusen) gem provides a simple way for logging and sending errors in any ruby application.
|
5
|
+
|
6
|
+
The notification includes information about the current request, session, environment and also gives a backtrace of the exception.
|
7
|
+
|
8
|
+
| Project | Rusen |
|
9
|
+
|------------------------ | ----------------- |
|
10
|
+
| gem name | rusen |
|
11
|
+
| license | MIT |
|
12
|
+
| moldiness | [](http://stillmaintained.com/Moove-it/rusen) |
|
13
|
+
| version | [](http://badge.fury.io/rb/rusen) |
|
14
|
+
| dependencies | [](https://gemnasium.com/Moove-it/rusen) |
|
15
|
+
| code quality | [](https://codeclimate.com/github/Moove-it/rusen) |
|
16
|
+
| continuous integration | [](https://travis-ci.org/Moove-it/rusen) |
|
17
|
+
| test coverage | [](https://coveralls.io/r/Moove-it/rusen) |
|
18
|
+
| homepage | [https://github.com/Moove-it/rusen][homepage] |
|
19
|
+
| documentation | [http://rdoc.info/github/Moove-it/rusen/frames][documentation] |
|
20
|
+
| author | [Adrian Gomez](https://coderbits.com/Moove-it) |
|
21
|
+
|
22
|
+
Installation
|
23
|
+
---
|
24
|
+
|
25
|
+
Just add the following line in your Gemfile
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
gem 'rusen'
|
29
|
+
```
|
30
|
+
|
31
|
+
Usage
|
32
|
+
---
|
33
|
+
|
34
|
+
### With global configuration
|
35
|
+
|
36
|
+
The easiest way to use it is with global configuration.
|
37
|
+
|
38
|
+
First you configure Rusen
|
39
|
+
```ruby
|
40
|
+
require 'rusen'
|
41
|
+
|
42
|
+
Rusen.settings.outputs = [:io, :email]
|
43
|
+
Rusen.settings.sections = [:backtrace, :request, :session, :environment]
|
44
|
+
Rusen.settings.email_prefix = '[ERROR] '
|
45
|
+
Rusen.settings.sender_address = 'some_email@example.com'
|
46
|
+
Rusen.settings.exception_recipients = %w(dev_team@example.com test_team@example.com)
|
47
|
+
Rusen.settings.smtp_settings = {
|
48
|
+
:address => 'smtp.gmail.com',
|
49
|
+
:port => 587,
|
50
|
+
:domain => 'example.org',
|
51
|
+
:authentication => :plain,
|
52
|
+
:user_name => 'dev_team@moove-it.com',
|
53
|
+
:password => 'xxxxxxx',
|
54
|
+
:enable_starttls_auto => true
|
55
|
+
}
|
56
|
+
```
|
57
|
+
And the you can start sending notifications:
|
58
|
+
```ruby
|
59
|
+
begin
|
60
|
+
method.call
|
61
|
+
rescue Exception => exception
|
62
|
+
Rusen.notify(exception)
|
63
|
+
end
|
64
|
+
```
|
65
|
+
This way, if you modify the notifications settings at runtime, every notification sent afterwards will use the new settings.
|
66
|
+
|
67
|
+
### With local configuration
|
68
|
+
|
69
|
+
This method lets you have more control when notifying. You may want for example to send an email when a particular exception occurs and just print to stdout otherwise.
|
70
|
+
To achieve this you can do the following:
|
71
|
+
```ruby
|
72
|
+
@email_settings = Settings.new
|
73
|
+
@email_settings.outputs = settings[:email]
|
74
|
+
Rusen.settings.sections = [:backtrace, :request, :session]
|
75
|
+
@email_settings.email_prefix = '[ERROR] '
|
76
|
+
@email_settings.sender_address = 'some_email@example.com'
|
77
|
+
@email_settings.exception_recipients = %w(dev_team@example.com test_team@example.com)
|
78
|
+
@email_settings.smtp_settings = {
|
79
|
+
:address => 'smtp.gmail.com',
|
80
|
+
:port => 587,
|
81
|
+
:domain => 'example.org',
|
82
|
+
:authentication => :plain,
|
83
|
+
:user_name => 'dev_team@moove-it.com',
|
84
|
+
:password => 'xxxxxxx',
|
85
|
+
:enable_starttls_auto => true
|
86
|
+
}
|
87
|
+
|
88
|
+
@email_notifier = Notifier.new(@email_settings)
|
89
|
+
|
90
|
+
@stdout_settings = Settings.new
|
91
|
+
@stdout_settings.outputs = settings[:io]
|
92
|
+
Rusen.settings.sections = [:backtrace]
|
93
|
+
|
94
|
+
@stdout_notifier = Notifier.new(@stdout_settings)
|
95
|
+
```
|
96
|
+
and then:
|
97
|
+
```ruby
|
98
|
+
begin
|
99
|
+
method.call
|
100
|
+
rescue SmallException => exception
|
101
|
+
@stdout_notifier.notify(exception)
|
102
|
+
rescue BigException => exception
|
103
|
+
@email_notifier.notify(exception)
|
104
|
+
end
|
105
|
+
```
|
106
|
+
|
107
|
+
Middleware
|
108
|
+
---
|
109
|
+
Rusen comes with a rack and rails special (soon to come) middleware for easy usage.
|
110
|
+
|
111
|
+
### Rack
|
112
|
+
To use Rusen in any rack application you just have to add the following code somewhere in your app (ex: config/initializers/rusen.rb):
|
113
|
+
```ruby
|
114
|
+
require 'rusen/middleware/rusen_rack'
|
115
|
+
|
116
|
+
use Rusen::Middleware::RusenRack,
|
117
|
+
:outputs => [:io, :email],
|
118
|
+
:sections => [:backtrace, :request, :session, :environment],
|
119
|
+
:email_prefix => '[ERROR] ',
|
120
|
+
:sender_address => 'some_email@example.com',
|
121
|
+
:exception_recipients => %w(dev_team@example.com test_team@example.com),
|
122
|
+
:smtp_settings => {
|
123
|
+
:address => 'smtp.gmail.com',
|
124
|
+
:port => 587,
|
125
|
+
:domain => 'example.org',
|
126
|
+
:authentication => :plain,
|
127
|
+
:user_name => 'dev_team@moove-it.com',
|
128
|
+
:password => 'xxxxxxx',
|
129
|
+
:enable_starttls_auto => true
|
130
|
+
}
|
131
|
+
```
|
132
|
+
This will capture any unhandled exception, send an email and write a trace in stdout.
|
133
|
+
|
134
|
+
Settings
|
135
|
+
---
|
136
|
+
### Outputs
|
137
|
+
Currently supported outputs are :io, :lo4r, :pony and :mail. More outputs are easy to add so you can customize Rusen to your needs.
|
138
|
+
|
139
|
+
Note: :io will only print to stdout for the time being, but there are plans to extend it to anything that Ruby::IO supports.
|
140
|
+
|
141
|
+
Pony, lo4r and Mail outputs require additional gems to work.
|
142
|
+
|
143
|
+
To use pony add this to your Gemfile:
|
144
|
+
```ruby
|
145
|
+
gem 'pony'
|
146
|
+
```
|
147
|
+
|
148
|
+
To use mail add this to your Gemfile:
|
149
|
+
```ruby
|
150
|
+
gem 'mail'
|
151
|
+
```
|
152
|
+
|
153
|
+
To use log4r add this to your Gemfile:
|
154
|
+
```ruby
|
155
|
+
gem 'log4r'
|
156
|
+
```
|
157
|
+
|
158
|
+
### Sections
|
159
|
+
You can choose the output sections simply by setting the appropriate values in the configuration.
|
160
|
+
|
161
|
+
### Exclude if
|
162
|
+
Here you can pass a block that will receive the error. If the block returns false, then the error will be notified.
|
163
|
+
|
164
|
+
### Email settings
|
165
|
+
All the email settings are self explanatory, but you can contact me if any of them needs clarification.
|
166
|
+
|
167
|
+
### Log4r settings
|
168
|
+
* logger_name _(required)_: Logger used for logging errors.
|
169
|
+
* log4r_config_file _(optional)_: YAML file that contains Log4r configuration. Rusen will load that file when given.
|
170
|
+
|
171
|
+
Sample of Log4r configuration file contents:
|
172
|
+
|
173
|
+
```
|
174
|
+
log4r_config:
|
175
|
+
loggers:
|
176
|
+
- name: error_notifications
|
177
|
+
level: ERROR
|
178
|
+
trace: false
|
179
|
+
outputters:
|
180
|
+
- logfile
|
181
|
+
- stdoout
|
182
|
+
|
183
|
+
outputters:
|
184
|
+
- type: FileOutputter
|
185
|
+
name: logfile
|
186
|
+
filename: 'log/service.log'
|
187
|
+
|
188
|
+
- type: StdoutOutputter
|
189
|
+
name: stdout
|
190
|
+
```
|
191
|
+
|
192
|
+
Sidekiq
|
193
|
+
---
|
194
|
+
Rusen comes with sidekiq integration builtin to use just add this to your sidekiq initializer:
|
195
|
+
```ruby
|
196
|
+
require 'rusen/sidekiq'
|
197
|
+
```
|
198
|
+
You can configure it with the global rusen configuration, ex:
|
199
|
+
```ruby
|
200
|
+
require 'rusen/sidekiq'
|
201
|
+
|
202
|
+
Rusen.settings.sender_address = 'some_email@example.com'
|
203
|
+
Rusen.settings.exception_recipients = %w(dev_team@example.com test_team@example.com)
|
204
|
+
Rusen.settings.smtp_settings = {
|
205
|
+
:address => 'smtp.gmail.com',
|
206
|
+
:port => 587,
|
207
|
+
:domain => 'example.org',
|
208
|
+
:authentication => :plain,
|
209
|
+
:user_name => 'dev_team@moove-it.com',
|
210
|
+
:password => 'xxxxxxx',
|
211
|
+
:enable_starttls_auto => true
|
212
|
+
}
|
213
|
+
```
|
214
|
+
|
215
|
+
Rusen supports versions ~> 2 and ~> 3 of sidekiq.
|
216
|
+
|
217
|
+
Extending to more outputs
|
218
|
+
---
|
219
|
+
Soon to come!
|
220
|
+
|
221
|
+
## Authors
|
222
|
+
|
223
|
+
Adrian Gomez is the author of the code, and current maintainer.
|
224
|
+
|
225
|
+
## Contributors
|
226
|
+
|
227
|
+
See the [Network View](https://github.com/Moove-it/rusen/network) and the [CHANGELOG](https://github.com/Moove-it/rusen/blob/master/CHANGELOG.md)
|
228
|
+
|
229
|
+
## Contributing
|
230
|
+
|
231
|
+
1. Fork it
|
232
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
233
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
234
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
235
|
+
5. Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
236
|
+
6. Create new Pull Request
|
237
|
+
|
238
|
+
## Versioning
|
239
|
+
|
240
|
+
This library aims to adhere to [Semantic Versioning 2.0.0][semver].
|
241
|
+
Violations of this scheme should be reported as bugs. Specifically,
|
242
|
+
if a minor or patch version is released that breaks backward
|
243
|
+
compatibility, a new version should be immediately released that
|
244
|
+
restores compatibility. Breaking changes to the public API will
|
245
|
+
only be introduced with new major versions.
|
246
|
+
|
247
|
+
As a result of this policy, you can (and should) specify a
|
248
|
+
dependency on this gem using the [Pessimistic Version Constraint][pvc] with two digits of precision.
|
249
|
+
|
250
|
+
For example:
|
251
|
+
|
252
|
+
spec.add_dependency 'rusen', '~> 0.0.2'
|
253
|
+
|
254
|
+
## Legal
|
255
|
+
|
256
|
+
* MIT License - See LICENSE file in this project
|
257
|
+
* Copyright (c) 2013 Adrian Gomez
|
258
|
+
|
259
|
+
[semver]: http://semver.org/
|
260
|
+
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
261
|
+
[documentation]: http://rdoc.info/github/Moove-it/rusen/frames
|
262
|
+
[homepage]: https://github.com/Moove-it/rusen
|
data/Rakefile
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#!/usr/bin/env rake
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
require 'rspec/core'
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
9
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'reek/rake/task'
|
13
|
+
Reek::Rake::Task.new do |t|
|
14
|
+
t.fail_on_error = true
|
15
|
+
t.verbose = false
|
16
|
+
t.source_files = 'lib/**/*.rb'
|
17
|
+
end
|
18
|
+
|
19
|
+
require 'roodi'
|
20
|
+
require 'roodi_task'
|
21
|
+
RoodiTask.new do |t|
|
22
|
+
t.verbose = false
|
23
|
+
end
|
24
|
+
|
25
|
+
task :default => :spec
|
26
|
+
|
27
|
+
namespace :test do
|
28
|
+
desc 'Test against all supported Rails versions'
|
29
|
+
task :all do
|
30
|
+
if RUBY_VERSION == '1.8.7'
|
31
|
+
%w( 2.2.x 2.3.x 3.1.x 3.2.x ).each do |rails_version|
|
32
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle --quiet"
|
33
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle exec rspec spec"
|
34
|
+
end
|
35
|
+
elsif RUBY_VERSION == '1.9.2'
|
36
|
+
%w( 2.3.x 3.1.x 3.2.x ).each do |rails_version|
|
37
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle --quiet"
|
38
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle exec rspec spec"
|
39
|
+
end
|
40
|
+
elsif RUBY_VERSION == '1.9.3'
|
41
|
+
%w( 3.1.x 3.2.x 4.0.x ).each do |rails_version|
|
42
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle --quiet"
|
43
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle exec rspec spec"
|
44
|
+
end
|
45
|
+
elsif RUBY_VERSION == '2.0.0'
|
46
|
+
%w( 3.1.x 3.2.x 4.0.x ).each do |rails_version|
|
47
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle --quiet"
|
48
|
+
sh "BUNDLE_GEMFILE='gemfiles/Gemfile.rails-#{rails_version}' bundle exec rspec spec"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
#require File.expand_path('../lib/rusen/version', __FILE__)
|
55
|
+
#require 'rdoc'
|
56
|
+
#require 'rdoc/task'
|
57
|
+
#RDoc::Task.new do |rdoc|
|
58
|
+
# rdoc.rdoc_dir = 'rdoc'
|
59
|
+
# rdoc.title = "Rusen #{Rusen::VERSION}"
|
60
|
+
# rdoc.options << '--line-numbers'
|
61
|
+
# rdoc.rdoc_files.include('README*')
|
62
|
+
# rdoc.rdoc_files.include('lib/**/*.rb')
|
63
|
+
#end
|
64
|
+
|
65
|
+
Bundler::GemHelper.install_tasks
|
data/lib/rusen.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
+
require 'rusen/version'
|
1
2
|
require 'rusen/settings'
|
2
3
|
require 'rusen/notifier'
|
3
4
|
|
4
5
|
module Rusen
|
5
6
|
|
6
7
|
@settings = Settings.new
|
7
|
-
@notifier = Notifier.new(@settings)
|
8
8
|
|
9
9
|
# Returns the global settings for rusen.
|
10
10
|
#
|
@@ -17,7 +17,11 @@ module Rusen
|
|
17
17
|
|
18
18
|
# (see Rusen::Notifier#notify)
|
19
19
|
def self.notify(exception, request = nil, environment = nil, session = nil)
|
20
|
-
|
20
|
+
notifier.notify(exception, request, environment, session)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.notifier
|
24
|
+
@notifier || Notifier.new(@settings)
|
21
25
|
end
|
22
26
|
|
23
27
|
end
|
@@ -10,15 +10,19 @@ module Rusen
|
|
10
10
|
def initialize(app, settings = {})
|
11
11
|
@app = app
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
13
|
+
if settings.is_a?(::Rusen::Settings)
|
14
|
+
@rusen_settings = settings
|
15
|
+
else
|
16
|
+
@rusen_settings = Settings.new
|
17
|
+
|
18
|
+
@rusen_settings.outputs = settings[:outputs]
|
19
|
+
@rusen_settings.sections = settings[:sections]
|
20
|
+
@rusen_settings.email_prefix = settings[:email_prefix]
|
21
|
+
@rusen_settings.sender_address = settings[:sender_address]
|
22
|
+
@rusen_settings.exception_recipients = settings[:exception_recipients]
|
23
|
+
@rusen_settings.smtp_settings = settings[:smtp_settings]
|
24
|
+
@rusen_settings.exclude_if = settings[:exclude_if]
|
25
|
+
end
|
22
26
|
|
23
27
|
@notifier = Notifier.new(@rusen_settings)
|
24
28
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rusen'
|
2
|
+
require 'sidekiq'
|
3
|
+
|
4
|
+
module Rusen
|
5
|
+
module Middleware
|
6
|
+
class RusenSidekiq
|
7
|
+
include Sidekiq::Util
|
8
|
+
|
9
|
+
def call(worker, msg, queue, &block)
|
10
|
+
yield
|
11
|
+
rescue => error
|
12
|
+
Rusen.notify(error)
|
13
|
+
|
14
|
+
raise
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|