rollbar 0.10.6 → 0.10.7
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.
- data/CHANGELOG.md +4 -0
- data/README.md +12 -4
- data/lib/rollbar.rb +7 -6
- data/lib/rollbar/active_record_extension.rb +14 -0
- data/lib/rollbar/version.rb +1 -1
- data/rollbar.gemspec +1 -0
- data/spec/rollbar_spec.rb +23 -10
- metadata +4 -2
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -60,6 +60,14 @@ $ rake rollbar:test
|
|
60
60
|
|
61
61
|
This will raise an exception within a test request; if it works, you'll see a stacktrace in the console, and the exception will appear in the Rollbar dashboard.
|
62
62
|
|
63
|
+
## Reporting form validation errors
|
64
|
+
|
65
|
+
To get form validation errors automatically reported to Rollbar just add the following ```after_validation``` callback to your models:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
after_validation :report_validation_errors_to_rollbar
|
69
|
+
```
|
70
|
+
|
63
71
|
## Manually reporting exceptions and messages
|
64
72
|
|
65
73
|
To report a caught exception to Rollbar, simply call ```Rollbar.report_exception```:
|
@@ -136,7 +144,7 @@ config.person_email_method = "email_address" # default is "email"
|
|
136
144
|
|
137
145
|
## Including additional runtime data
|
138
146
|
|
139
|
-
You can provide a lambda that will be called for each exception or message report. ```custom_data_method``` should be a lambda that takes no arguments and returns a hash.
|
147
|
+
You can provide a lambda that will be called for each exception or message report. ```custom_data_method``` should be a lambda that takes no arguments and returns a hash.
|
140
148
|
|
141
149
|
Add the following in ```config/initializers/rollbar.rb```:
|
142
150
|
|
@@ -170,7 +178,7 @@ Rollbar.silenced {
|
|
170
178
|
|
171
179
|
## Asynchronous reporting
|
172
180
|
|
173
|
-
By default, all messages are reported synchronously. You can enable asynchronous reporting with [girl_friday](https://github.com/mperham/girl_friday) or [Sidekiq](https://github.com/mperham/sidekiq).
|
181
|
+
By default, all messages are reported synchronously. You can enable asynchronous reporting with [girl_friday](https://github.com/mperham/girl_friday) or [Sidekiq](https://github.com/mperham/sidekiq).
|
174
182
|
|
175
183
|
### Using girl_friday
|
176
184
|
|
@@ -249,7 +257,7 @@ Available options:
|
|
249
257
|
</dd>
|
250
258
|
<dt>rollbar_env</dt>
|
251
259
|
<dd>Deploy environment name
|
252
|
-
|
260
|
+
|
253
261
|
Default: ```rails_env```
|
254
262
|
|
255
263
|
</dd>
|
@@ -286,7 +294,7 @@ Check out [resque-rollbar](https://github.com/CrowdFlower/resque-rollbar) for us
|
|
286
294
|
|
287
295
|
## Using with Zeus
|
288
296
|
|
289
|
-
Some users have reported problems with Zeus when ```rake``` was not explicitly included in their Gemfile. If the zeus server fails to start after installing the rollbar gem, try explicitly adding ```gem 'rake'``` to your ```Gemfile```. See [this thread](https://github.com/rollbar/rollbar-gem/issues/30) for more information.
|
297
|
+
Some users have reported problems with Zeus when ```rake``` was not explicitly included in their Gemfile. If the zeus server fails to start after installing the rollbar gem, try explicitly adding ```gem 'rake'``` to your ```Gemfile```. See [this thread](https://github.com/rollbar/rollbar-gem/issues/30) for more information.
|
290
298
|
|
291
299
|
|
292
300
|
## Help / Support
|
data/lib/rollbar.rb
CHANGED
@@ -11,6 +11,7 @@ require 'rollbar/version'
|
|
11
11
|
require 'rollbar/configuration'
|
12
12
|
require 'rollbar/request_data_extractor'
|
13
13
|
require 'rollbar/exception_reporter'
|
14
|
+
require 'rollbar/active_record_extension'
|
14
15
|
|
15
16
|
require 'rollbar/railtie' if defined?(Rails)
|
16
17
|
|
@@ -31,7 +32,7 @@ module Rollbar
|
|
31
32
|
# end
|
32
33
|
def configure
|
33
34
|
require_hooks
|
34
|
-
|
35
|
+
|
35
36
|
# if configuration.enabled has not been set yet (is still 'nil'), set to true.
|
36
37
|
if configuration.enabled.nil?
|
37
38
|
configuration.enabled = true
|
@@ -144,7 +145,7 @@ module Rollbar
|
|
144
145
|
end
|
145
146
|
|
146
147
|
private
|
147
|
-
|
148
|
+
|
148
149
|
def require_hooks()
|
149
150
|
require 'rollbar/delayed_job' if defined?(Delayed) && defined?(Delayed::Plugins)
|
150
151
|
require 'rollbar/sidekiq' if defined?(Sidekiq)
|
@@ -255,25 +256,25 @@ module Rollbar
|
|
255
256
|
end
|
256
257
|
end
|
257
258
|
|
258
|
-
def send_payload_using_eventmachine(payload)
|
259
|
+
def send_payload_using_eventmachine(payload)
|
259
260
|
req = EventMachine::HttpRequest.new(configuration.endpoint).post(:body => payload)
|
260
261
|
req.callback do
|
261
262
|
if req.response_header.status == 200
|
262
263
|
logger.info '[Rollbar] Success'
|
263
264
|
else
|
264
265
|
logger.warn "[Rollbar] Got unexpected status code from Rollbar.io api: #{req.response_header.status}"
|
265
|
-
logger.info "[Rollbar] Response: #{req.response}"
|
266
|
+
logger.info "[Rollbar] Response: #{req.response}"
|
266
267
|
end
|
267
268
|
end
|
268
269
|
req.errback do
|
269
270
|
logger.warn "[Rollbar] Call to API failed, status code: #{req.response_header.status}"
|
270
|
-
logger.info "[Rollbar] Error's response: #{req.response}"
|
271
|
+
logger.info "[Rollbar] Error's response: #{req.response}"
|
271
272
|
end
|
272
273
|
end
|
273
274
|
|
274
275
|
def send_payload(payload)
|
275
276
|
logger.info '[Rollbar] Sending payload'
|
276
|
-
|
277
|
+
|
277
278
|
if configuration.use_eventmachine
|
278
279
|
send_payload_using_eventmachine(payload)
|
279
280
|
return
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Rollbar
|
2
|
+
module ActiveRecordExtension
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
def report_validation_errors_to_rollbar
|
6
|
+
self.errors.full_messages.each do |error|
|
7
|
+
logger.info "[Rollbar] Reporting form validation error: #{error} for #{self.to_s}"
|
8
|
+
Rollbar.report_message("Form Validation Error: #{error} for #{self.to_s}")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
ActiveRecord::Base.send(:include, Rollbar::ActiveRecordExtension)
|
data/lib/rollbar/version.rb
CHANGED
data/rollbar.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.description = %q{Rails plugin to catch and send exceptions to Rollbar}
|
8
8
|
gem.summary = %q{Reports exceptions to Rollbar}
|
9
9
|
gem.homepage = "https://github.com/rollbar/rollbar-gem"
|
10
|
+
gem.license = 'MIT'
|
10
11
|
|
11
12
|
gem.files = `git ls-files`.split($\)
|
12
13
|
gem.test_files = gem.files.grep(%r{^(spec)/})
|
data/spec/rollbar_spec.rb
CHANGED
@@ -44,7 +44,7 @@ describe Rollbar do
|
|
44
44
|
|
45
45
|
it 'should not be enabled when not configured' do
|
46
46
|
Rollbar.unconfigure
|
47
|
-
|
47
|
+
|
48
48
|
Rollbar.configuration.enabled.should be_nil
|
49
49
|
Rollbar.report_exception(@exception).should == 'disabled'
|
50
50
|
end
|
@@ -59,7 +59,7 @@ describe Rollbar do
|
|
59
59
|
|
60
60
|
# now configure again (perhaps to change some other values)
|
61
61
|
Rollbar.configure do |config| end
|
62
|
-
|
62
|
+
|
63
63
|
Rollbar.configuration.enabled.should == false
|
64
64
|
Rollbar.report_exception(@exception).should == 'disabled'
|
65
65
|
end
|
@@ -165,6 +165,7 @@ describe Rollbar do
|
|
165
165
|
end
|
166
166
|
|
167
167
|
let(:logger_mock) { double("Rails.logger").as_null_object }
|
168
|
+
let(:user) { User.create(:email => 'email@example.com', :encrypted_password => '', :created_at => Time.now, :updated_at => Time.now) }
|
168
169
|
|
169
170
|
it 'should report simple messages' do
|
170
171
|
logger_mock.should_receive(:info).with('[Rollbar] Scheduling payload')
|
@@ -201,6 +202,18 @@ describe Rollbar do
|
|
201
202
|
Rollbar.report_message("Test message with circular extra data", 'debug', a)
|
202
203
|
end
|
203
204
|
|
205
|
+
it 'should be able to report form validation errors when they are present' do
|
206
|
+
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
207
|
+
user.errors.add(:example, "error")
|
208
|
+
user.report_validation_errors_to_rollbar
|
209
|
+
end
|
210
|
+
|
211
|
+
it 'should not report form validation errors when they are not present' do
|
212
|
+
logger_mock.should_not_receive(:info).with('[Rollbar] Success')
|
213
|
+
user.errors.clear
|
214
|
+
user.report_validation_errors_to_rollbar
|
215
|
+
end
|
216
|
+
|
204
217
|
after(:each) do
|
205
218
|
Rollbar.configure do |config|
|
206
219
|
config.logger = ::Rails.logger
|
@@ -420,7 +433,7 @@ describe Rollbar do
|
|
420
433
|
trace[:exception][:class].should match(/^(NameError|NoMethodError)$/)
|
421
434
|
trace[:exception][:message].should match(/^(undefined local variable or method `bar'|undefined method `bar' on an instance of)/)
|
422
435
|
end
|
423
|
-
|
436
|
+
|
424
437
|
it 'should include custom data when configured' do
|
425
438
|
Rollbar.configure do |config|
|
426
439
|
config.custom_data_method = lambda { {:foo => "baz", :hello => [4, 5, 6]} }
|
@@ -492,17 +505,17 @@ describe Rollbar do
|
|
492
505
|
data[:language].should == 'ruby'
|
493
506
|
data[:framework].should match(/^Rails/)
|
494
507
|
end
|
495
|
-
|
508
|
+
|
496
509
|
it 'should have a default production environment' do
|
497
510
|
data = Rollbar.send(:base_data)
|
498
511
|
data[:environment].should == 'production'
|
499
512
|
end
|
500
|
-
|
513
|
+
|
501
514
|
it 'should have an overridden environment' do
|
502
515
|
Rollbar.configure do |config|
|
503
516
|
config.environment = 'overridden'
|
504
517
|
end
|
505
|
-
|
518
|
+
|
506
519
|
data = Rollbar.send(:base_data)
|
507
520
|
data[:environment].should == 'overridden'
|
508
521
|
end
|
@@ -546,19 +559,19 @@ describe Rollbar do
|
|
546
559
|
it "should include gem paths for specified project gems in the payload" do
|
547
560
|
gems = ['rack', 'rspec-rails']
|
548
561
|
gem_paths = []
|
549
|
-
|
562
|
+
|
550
563
|
Rollbar.configure do |config|
|
551
564
|
config.project_gems = gems
|
552
565
|
end
|
553
|
-
|
566
|
+
|
554
567
|
gems.each {|gem|
|
555
568
|
gem_paths.push(Gem::Specification.find_by_name(gem).gem_dir)
|
556
569
|
}
|
557
|
-
|
570
|
+
|
558
571
|
data = Rollbar.send(:message_data, 'test', 'info', {})
|
559
572
|
data[:project_package_paths].kind_of?(Array).should == true
|
560
573
|
data[:project_package_paths].length.should == gem_paths.length
|
561
|
-
|
574
|
+
|
562
575
|
data[:project_package_paths].each_with_index{|path, index|
|
563
576
|
path.should == gem_paths[index]
|
564
577
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/generators/rollbar/rollbar_generator.rb
|
132
132
|
- lib/generators/rollbar/templates/initializer.rb
|
133
133
|
- lib/rollbar.rb
|
134
|
+
- lib/rollbar/active_record_extension.rb
|
134
135
|
- lib/rollbar/better_errors.rb
|
135
136
|
- lib/rollbar/capistrano.rb
|
136
137
|
- lib/rollbar/configuration.rb
|
@@ -207,7 +208,8 @@ files:
|
|
207
208
|
- spec/rollbar_spec.rb
|
208
209
|
- spec/spec_helper.rb
|
209
210
|
homepage: https://github.com/rollbar/rollbar-gem
|
210
|
-
licenses:
|
211
|
+
licenses:
|
212
|
+
- MIT
|
211
213
|
post_install_message:
|
212
214
|
rdoc_options: []
|
213
215
|
require_paths:
|