rollbar 0.12.13 → 0.12.14
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 +4 -4
- data/Appraisals +0 -1
- data/CHANGELOG.md +7 -0
- data/README.md +52 -1
- data/THANKS.md +3 -0
- data/gemfiles/rails30.gemfile +5 -7
- data/gemfiles/rails31.gemfile +5 -7
- data/gemfiles/rails32.gemfile +5 -7
- data/gemfiles/rails40.gemfile +5 -8
- data/lib/rollbar.rb +53 -14
- data/lib/rollbar/capistrano3.rb +1 -0
- data/lib/rollbar/configuration.rb +6 -0
- data/lib/rollbar/delayed_job.rb +4 -1
- data/lib/rollbar/middleware/rack/builder.rb +1 -1
- data/lib/rollbar/middleware/rack/test_session.rb +1 -1
- data/lib/rollbar/middleware/rails/show_exceptions.rb +3 -3
- data/lib/rollbar/request_data_extractor.rb +13 -3
- data/lib/rollbar/sidekiq.rb +1 -1
- data/lib/rollbar/tasks/rollbar.cap +38 -0
- data/lib/rollbar/version.rb +1 -1
- data/spec/controllers/home_controller_spec.rb +36 -0
- data/spec/dummyapp/app/models/user.rb +5 -1
- data/spec/dummyapp/db/seeds.rb +2 -2
- data/spec/rollbar_spec.rb +48 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e43cb0fee10ec04426c636b011a4f932d8f5a18
|
4
|
+
data.tar.gz: 8a9b636c79acd266d4f3fa313f07734ef160454e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b641639ed666ddae670daefe34edf7d44ec6b8a9b5fa8db45bb58650c07a5c9807af04409b4e81d68facc0eaad3f353b3fcf24420444fef0df0df74bec89f972
|
7
|
+
data.tar.gz: 77ac64ab273cef507da4675c906ddaf3f9eb126714250f47ba7ac0d634cae80c2400c350d6022901abd2a01fd39925c2dfda6a4618b5309f88fff649e9753d09
|
data/Appraisals
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
**0.12.14**
|
4
|
+
- Added ability to scrub request headers
|
5
|
+
- Added flag to disable reporting of Delayed::Job job data when handling uncaught exceptions that happen in jobs
|
6
|
+
- New `report_message_with_request` that allows reporting request and person data, similar to `report_exception`
|
7
|
+
- Changed various exception handlers to catch `Exception` subclasses instead of only `StandardError`s
|
8
|
+
- Added Capistrano 3 support
|
9
|
+
|
3
10
|
**0.12.13**
|
4
11
|
- Add a little more debugging information for 'payload too large' errors
|
5
12
|
- Pushing new gem to fix errant 32kb size limit in the rubygems copy of 0.12.12
|
data/README.md
CHANGED
@@ -116,7 +116,11 @@ Rollbar.report_message("Unexpected input", "warning")
|
|
116
116
|
Rollbar.report_message("Login successful")
|
117
117
|
|
118
118
|
# can also include additional data as a hash in the final param. :body is reserved.
|
119
|
-
Rollbar.report_message("Login successful", "info", :
|
119
|
+
Rollbar.report_message("Login successful", "info", :username => @username)
|
120
|
+
|
121
|
+
# pass request and person data
|
122
|
+
Rollbar.report_message_with_request("Settings saved", "debug", rollbar_request_data,
|
123
|
+
rollbar_person_data, :account_id => account.id)
|
120
124
|
```
|
121
125
|
|
122
126
|
## Data sanitization (scrubbing)
|
@@ -131,6 +135,10 @@ By default, the notifier will "scrub" the following fields from requests before
|
|
131
135
|
- ```:password_confirmation```
|
132
136
|
- ```:secret_token```
|
133
137
|
|
138
|
+
And the following http header
|
139
|
+
|
140
|
+
- ```"Authorization"```
|
141
|
+
|
134
142
|
If a request contains one of these fields, the value will be replaced with a ```"*"``` before being sent.
|
135
143
|
|
136
144
|
Additional fields can be scrubbed by updating ```Rollbar.configuration.scrub_fields```:
|
@@ -140,6 +148,14 @@ Additional fields can be scrubbed by updating ```Rollbar.configuration.scrub_fie
|
|
140
148
|
Rollbar.configuration.scrub_fields |= [:user_password]
|
141
149
|
```
|
142
150
|
|
151
|
+
And ```Rollbar.configuration.scrub_headers```:
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
# scrub out the "X-Access-Token" http header
|
155
|
+
Rollbar.configuration.scrub_headers |= ["X-Access-Token"]
|
156
|
+
```
|
157
|
+
|
158
|
+
|
143
159
|
## Person tracking
|
144
160
|
|
145
161
|
Rollbar will send information about the current user (called a "person" in Rollbar parlance) along with each error report, when available. This works by calling the ```current_user``` controller method. The return value should be an object with an ```id``` method and, optionally, ```username``` and ```email``` methods.
|
@@ -198,6 +214,24 @@ Rollbar.silenced {
|
|
198
214
|
}
|
199
215
|
```
|
200
216
|
|
217
|
+
## Delayed::Job integration
|
218
|
+
|
219
|
+
If `delayed_job` is defined, Rollbar will automatically install a handler that reports any uncaught exceptions that occur in jobs.
|
220
|
+
|
221
|
+
By default, the job's data will be included in the report. If you want to disable this functionality to prevent sensitive data from possibly being sent, use the following configuration option:
|
222
|
+
|
223
|
+
```ruby
|
224
|
+
config.report_dj_data = false # default is true
|
225
|
+
```
|
226
|
+
|
227
|
+
You can also change the threshold of job retries that must occur before a job is reported to Rollbar:
|
228
|
+
|
229
|
+
```ruby
|
230
|
+
config.dj_threshold = 2 # default is 0
|
231
|
+
```
|
232
|
+
|
233
|
+
|
234
|
+
|
201
235
|
## Asynchronous reporting
|
202
236
|
|
203
237
|
By default, all messages are reported synchronously. You can enable asynchronous reporting with [girl_friday](https://github.com/mperham/girl_friday) or [sucker_punch](https://github.com/brandonhilkert/sucker_punch) or [Sidekiq](https://github.com/mperham/sidekiq).
|
@@ -272,6 +306,23 @@ For this to work, you'll also need to set up rollbar-agent--see its docs for det
|
|
272
306
|
|
273
307
|
## Deploy Tracking with Capistrano
|
274
308
|
|
309
|
+
### Capistrano 3
|
310
|
+
|
311
|
+
Add to your `Capfile`:
|
312
|
+
|
313
|
+
```ruby
|
314
|
+
require 'rollbar/capistrano3'
|
315
|
+
```
|
316
|
+
|
317
|
+
And then, to your `deploy.rb`:
|
318
|
+
|
319
|
+
```ruby
|
320
|
+
set :rollbar_token, 'POST_SERVER_ITEM_ACCESS_TOKEN'
|
321
|
+
set :rollbar_env, Proc.new { fetch :stage }
|
322
|
+
```
|
323
|
+
|
324
|
+
### Capistrano 2
|
325
|
+
|
275
326
|
Add the following to ```deploy.rb```:
|
276
327
|
|
277
328
|
```ruby
|
data/THANKS.md
CHANGED
@@ -6,6 +6,8 @@ Huge thanks to the following contributors (by github username). For the most up-
|
|
6
6
|
- [arr-ee](https://github.com/arr-ee)
|
7
7
|
- [awmichel](https://github.com/awmichel)
|
8
8
|
- [bradx3](https://github.com/bradx3)
|
9
|
+
- [chrisb](https://github.com/chrisb)
|
10
|
+
- [derekrockwell](https://github.com/derekrockwell)
|
9
11
|
- [dimko](https://github.com/dimko)
|
10
12
|
- [dlackty](https://github.com/dlackty)
|
11
13
|
- [fabsays](https://github.com/fabsays)
|
@@ -17,6 +19,7 @@ Huge thanks to the following contributors (by github username). For the most up-
|
|
17
19
|
- [juggler](https://github.com/juggler)
|
18
20
|
- [kavu](https://github.com/kavu)
|
19
21
|
- [magnolia-fan](https://github.com/magnolia-fan)
|
22
|
+
- [mauricio](https://github.com/mauricio)
|
20
23
|
- [miloops](https://github.com/miloops)
|
21
24
|
- [mipearson](https://github.com/mipearson)
|
22
25
|
- [petergoldstein](https://github.com/petergoldstein)
|
data/gemfiles/rails30.gemfile
CHANGED
@@ -6,13 +6,11 @@ gem "sqlite3", :platform=>[:ruby, :mswin, :mingw]
|
|
6
6
|
gem "jruby-openssl", :platform=>:jruby
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
|
8
8
|
gem "appraisal"
|
9
|
-
|
10
|
-
gem
|
11
|
-
gem
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem 'rubinius-developer_tools', :platform => :rbx
|
15
|
-
|
9
|
+
gem "rubysl", "~> 2.0", :platform=>:rbx
|
10
|
+
gem "racc", :platform=>:rbx
|
11
|
+
gem "minitest", :platform=>:rbx
|
12
|
+
gem "rubysl-test-unit", :platform=>:rbx
|
13
|
+
gem "rubinius-developer_tools", :platform=>:rbx
|
16
14
|
gem "rails", "3.0.20"
|
17
15
|
|
18
16
|
gemspec :path=>"../"
|
data/gemfiles/rails31.gemfile
CHANGED
@@ -6,13 +6,11 @@ gem "sqlite3", :platform=>[:ruby, :mswin, :mingw]
|
|
6
6
|
gem "jruby-openssl", :platform=>:jruby
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
|
8
8
|
gem "appraisal"
|
9
|
-
|
10
|
-
gem
|
11
|
-
gem
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem 'rubinius-developer_tools', :platform => :rbx
|
15
|
-
|
9
|
+
gem "rubysl", "~> 2.0", :platform=>:rbx
|
10
|
+
gem "racc", :platform=>:rbx
|
11
|
+
gem "minitest", :platform=>:rbx
|
12
|
+
gem "rubysl-test-unit", :platform=>:rbx
|
13
|
+
gem "rubinius-developer_tools", :platform=>:rbx
|
16
14
|
gem "rails", "3.1.12"
|
17
15
|
|
18
16
|
gemspec :path=>"../"
|
data/gemfiles/rails32.gemfile
CHANGED
@@ -6,13 +6,11 @@ gem "sqlite3", :platform=>[:ruby, :mswin, :mingw]
|
|
6
6
|
gem "jruby-openssl", :platform=>:jruby
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
|
8
8
|
gem "appraisal"
|
9
|
-
|
10
|
-
gem
|
11
|
-
gem
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem 'rubinius-developer_tools', :platform => :rbx
|
15
|
-
|
9
|
+
gem "rubysl", "~> 2.0", :platform=>:rbx
|
10
|
+
gem "racc", :platform=>:rbx
|
11
|
+
gem "minitest", :platform=>:rbx
|
12
|
+
gem "rubysl-test-unit", :platform=>:rbx
|
13
|
+
gem "rubinius-developer_tools", :platform=>:rbx
|
16
14
|
gem "rails", "3.2.12"
|
17
15
|
|
18
16
|
gemspec :path=>"../"
|
data/gemfiles/rails40.gemfile
CHANGED
@@ -6,14 +6,11 @@ gem "sqlite3", :platform=>[:ruby, :mswin, :mingw]
|
|
6
6
|
gem "jruby-openssl", :platform=>:jruby
|
7
7
|
gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
|
8
8
|
gem "appraisal"
|
9
|
+
gem "rubysl", "~> 2.0", :platform=>:rbx
|
10
|
+
gem "racc", :platform=>:rbx
|
11
|
+
gem "minitest", :platform=>:rbx
|
12
|
+
gem "rubysl-test-unit", :platform=>:rbx
|
13
|
+
gem "rubinius-developer_tools", :platform=>:rbx
|
9
14
|
gem "rails", "4.0.0"
|
10
15
|
|
11
|
-
gem 'rubysl', '~> 2.0', :platform => :rbx
|
12
|
-
gem 'racc', :platform => :rbx
|
13
|
-
gem 'minitest', :platform => :rbx
|
14
|
-
gem 'rubysl-test-unit', :platform => :rbx
|
15
|
-
gem 'rubinius-developer_tools', :platform => :rbx
|
16
|
-
|
17
|
-
gem "protected_attributes"
|
18
|
-
|
19
16
|
gemspec :path=>"../"
|
data/lib/rollbar.rb
CHANGED
@@ -86,20 +86,8 @@ module Rollbar
|
|
86
86
|
return 'ignored' if ignored?(exception)
|
87
87
|
|
88
88
|
data = exception_data(exception, level ? level : filtered_level(exception))
|
89
|
-
|
90
|
-
|
91
|
-
route = request_data[:route]
|
92
|
-
|
93
|
-
# make sure route is a hash built by RequestDataExtractor in rails apps
|
94
|
-
if route.is_a?(Hash) and not route.empty?
|
95
|
-
data[:context] = "#{request_data[:route][:controller]}" + '#' + "#{request_data[:route][:action]}"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
request_data[:env].reject!{|k, v| v.is_a?(IO) } if request_data[:env]
|
100
|
-
data[:request] = request_data
|
101
|
-
|
102
|
-
end
|
89
|
+
|
90
|
+
attach_request_data(data, request_data) if request_data
|
103
91
|
data[:person] = person_data if person_data
|
104
92
|
|
105
93
|
@last_report = data
|
@@ -128,6 +116,43 @@ module Rollbar
|
|
128
116
|
return 'disabled' unless configuration.enabled
|
129
117
|
|
130
118
|
data = message_data(message, level, extra_data)
|
119
|
+
|
120
|
+
@last_report = data
|
121
|
+
|
122
|
+
payload = build_payload(data)
|
123
|
+
schedule_payload(payload)
|
124
|
+
log_instance_link(data)
|
125
|
+
data
|
126
|
+
rescue => e
|
127
|
+
report_internal_error(e)
|
128
|
+
'error'
|
129
|
+
end
|
130
|
+
|
131
|
+
# Reports an arbitrary message to Rollbar with request and person data
|
132
|
+
#
|
133
|
+
# @example
|
134
|
+
# Rollbar.report_message_with_request("User login failed", 'info', rollbar_request_data, rollbar_person_data, :foo => 'bar')
|
135
|
+
#
|
136
|
+
# @param message [String] The message body. This will be used to identify the message within
|
137
|
+
# Rollbar. For best results, avoid putting variables in the message body; pass them as
|
138
|
+
# `extra_data` instead.
|
139
|
+
# @param level [String] The level. One of: 'critical', 'error', 'warning', 'info', 'debug'
|
140
|
+
# @param request_data [Hash] Data describing the request. Should be the result of calling
|
141
|
+
# `rollbar_request_data`.
|
142
|
+
# @param person_data [Hash] Data describing the affected person. Should be the result of calling
|
143
|
+
# `rollbar_person_data`
|
144
|
+
# @param extra_data [Hash] Additional data to include alongside the body. Don't use 'body' as
|
145
|
+
# it is reserved.
|
146
|
+
def report_message_with_request(message, level = 'info', request_data = nil, person_data = nil, extra_data = {})
|
147
|
+
return 'disabled' unless configuration.enabled
|
148
|
+
|
149
|
+
data = message_data(message, level, extra_data)
|
150
|
+
|
151
|
+
attach_request_data(data, request_data) if request_data
|
152
|
+
data[:person] = person_data if person_data
|
153
|
+
|
154
|
+
@last_report = data
|
155
|
+
|
131
156
|
payload = build_payload(data)
|
132
157
|
schedule_payload(payload)
|
133
158
|
log_instance_link(data)
|
@@ -165,6 +190,20 @@ module Rollbar
|
|
165
190
|
end
|
166
191
|
|
167
192
|
private
|
193
|
+
|
194
|
+
def attach_request_data(payload, request_data)
|
195
|
+
if request_data[:route]
|
196
|
+
route = request_data[:route]
|
197
|
+
|
198
|
+
# make sure route is a hash built by RequestDataExtractor in rails apps
|
199
|
+
if route.is_a?(Hash) and not route.empty?
|
200
|
+
payload[:context] = "#{request_data[:route][:controller]}" + '#' + "#{request_data[:route][:action]}"
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
request_data[:env].reject!{|k, v| v.is_a?(IO) } if request_data[:env]
|
205
|
+
payload[:request] = request_data
|
206
|
+
end
|
168
207
|
|
169
208
|
def require_hooks()
|
170
209
|
require 'rollbar/delayed_job' if defined?(Delayed) && defined?(Delayed::Plugins)
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../tasks/rollbar.cap", __FILE__)
|
@@ -9,6 +9,7 @@ module Rollbar
|
|
9
9
|
attr_accessor :code_version
|
10
10
|
attr_accessor :custom_data_method
|
11
11
|
attr_accessor :default_logger
|
12
|
+
attr_accessor :dj_threshold
|
12
13
|
attr_accessor :enabled
|
13
14
|
attr_accessor :endpoint
|
14
15
|
attr_accessor :environment
|
@@ -21,8 +22,10 @@ module Rollbar
|
|
21
22
|
attr_accessor :person_id_method
|
22
23
|
attr_accessor :person_username_method
|
23
24
|
attr_accessor :person_email_method
|
25
|
+
attr_accessor :report_dj_data
|
24
26
|
attr_accessor :root
|
25
27
|
attr_accessor :scrub_fields
|
28
|
+
attr_accessor :scrub_headers
|
26
29
|
attr_accessor :use_async
|
27
30
|
attr_accessor :use_eventmachine
|
28
31
|
attr_accessor :web_base
|
@@ -38,6 +41,7 @@ module Rollbar
|
|
38
41
|
@code_version = nil
|
39
42
|
@custom_data_method = nil
|
40
43
|
@default_logger = lambda { Logger.new(STDERR) }
|
44
|
+
@dj_threshold = 0
|
41
45
|
@enabled = nil # set to true when configure is called
|
42
46
|
@endpoint = DEFAULT_ENDPOINT
|
43
47
|
@environment = nil
|
@@ -53,8 +57,10 @@ module Rollbar
|
|
53
57
|
@person_username_method = 'username'
|
54
58
|
@person_email_method = 'email'
|
55
59
|
@project_gems = []
|
60
|
+
@report_dj_data = true
|
56
61
|
@scrub_fields = [:passwd, :password, :password_confirmation, :secret,
|
57
62
|
:confirm_password, :password_confirmation, :secret_token]
|
63
|
+
@scrub_headers = ['Authorization']
|
58
64
|
@use_async = false
|
59
65
|
@use_eventmachine = false
|
60
66
|
@web_base = DEFAULT_WEB_BASE
|
data/lib/rollbar/delayed_job.rb
CHANGED
@@ -8,7 +8,10 @@ module Delayed
|
|
8
8
|
begin
|
9
9
|
block.call(job, *args)
|
10
10
|
rescue Exception => e
|
11
|
-
::Rollbar.
|
11
|
+
if job.attempts >= ::Rollbar.configuration.dj_threshold
|
12
|
+
data = ::Rollbar.configuration.report_dj_data ? job : nil
|
13
|
+
::Rollbar.report_exception(e, data)
|
14
|
+
end
|
12
15
|
raise e
|
13
16
|
end
|
14
17
|
end
|
@@ -6,7 +6,7 @@ module Rollbar
|
|
6
6
|
|
7
7
|
def render_exception_with_rollbar(env, exception)
|
8
8
|
key = 'action_dispatch.show_detailed_exceptions'
|
9
|
-
|
9
|
+
|
10
10
|
# don't report production exceptions here as it is done below
|
11
11
|
# in call_with_rollbar() when show_detailed_exception is false
|
12
12
|
if not env.has_key?(key) or env[key]
|
@@ -14,10 +14,10 @@ module Rollbar
|
|
14
14
|
end
|
15
15
|
render_exception_without_rollbar(env, exception)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def call_with_rollbar(env)
|
19
19
|
call_without_rollbar(env)
|
20
|
-
rescue => exception
|
20
|
+
rescue Exception => exception
|
21
21
|
# won't reach here if show_detailed_exceptions is true
|
22
22
|
report_exception_to_rollbar(env, exception)
|
23
23
|
raise exception
|
@@ -50,9 +50,10 @@ module Rollbar
|
|
50
50
|
def rollbar_headers(env)
|
51
51
|
env.keys.grep(/^HTTP_/).map do |header|
|
52
52
|
name = header.gsub(/^HTTP_/, '').split('_').map(&:capitalize).join('-')
|
53
|
-
# exclude cookies - we already include a parsed version as request_data[:cookies]
|
54
53
|
if name == 'Cookie'
|
55
|
-
|
54
|
+
{}
|
55
|
+
elsif sensitive_headers_list.include?(name)
|
56
|
+
{ name => rollbar_scrubbed(env[header]) }
|
56
57
|
else
|
57
58
|
{ name => env[header] }
|
58
59
|
end
|
@@ -123,7 +124,7 @@ module Rollbar
|
|
123
124
|
else
|
124
125
|
params.to_hash.inject({}) do |result, (key, value)|
|
125
126
|
if sensitive_params.include?(key.to_sym)
|
126
|
-
result[key] =
|
127
|
+
result[key] = rollbar_scrubbed(value)
|
127
128
|
elsif value.is_a?(Hash)
|
128
129
|
result[key] = rollbar_filtered_params(sensitive_params, value)
|
129
130
|
elsif ATTACHMENT_CLASSES.include?(value.class.name)
|
@@ -143,5 +144,14 @@ module Rollbar
|
|
143
144
|
def sensitive_params_list(env)
|
144
145
|
Rollbar.configuration.scrub_fields |= Array(env['action_dispatch.parameter_filter'])
|
145
146
|
end
|
147
|
+
|
148
|
+
def sensitive_headers_list
|
149
|
+
Rollbar.configuration.scrub_headers |= []
|
150
|
+
end
|
151
|
+
|
152
|
+
def rollbar_scrubbed(value)
|
153
|
+
'*' * (value.length rescue 8)
|
154
|
+
end
|
155
|
+
|
146
156
|
end
|
147
157
|
end
|
data/lib/rollbar/sidekiq.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
namespace :rollbar do
|
6
|
+
|
7
|
+
desc 'Send the deployment notification to Rollbar.'
|
8
|
+
task :deploy do
|
9
|
+
uri = URI.parse 'https://api.rollbar.com/api/1/deploy/'
|
10
|
+
params = {
|
11
|
+
:local_username => fetch(:rollbar_user),
|
12
|
+
:access_token => fetch(:rollbar_token),
|
13
|
+
:environment => fetch(:rollbar_env),
|
14
|
+
:revision => fetch(:current_revision) }
|
15
|
+
|
16
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
17
|
+
request.body = JSON.dump(params)
|
18
|
+
|
19
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => true) do |http|
|
20
|
+
http.request(request)
|
21
|
+
end
|
22
|
+
|
23
|
+
# this is not the right way to output to capistrano's log..
|
24
|
+
puts 'Rollbar notification complete.'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
namespace :deploy do
|
29
|
+
after 'deploy:finished', 'rollbar:deploy'
|
30
|
+
end
|
31
|
+
|
32
|
+
namespace :load do
|
33
|
+
task :defaults do
|
34
|
+
set :rollbar_user, Proc.new { ENV['USER'] || ENV['USERNAME'] }
|
35
|
+
set :rollbar_env, Proc.new { fetch :rails_env, 'production' }
|
36
|
+
set :rollbar_token, Proc.new { abort "Please specify the Rollbar access token, set :rollbar_token, 'your token'" }
|
37
|
+
end
|
38
|
+
end
|
data/lib/rollbar/version.rb
CHANGED
@@ -153,6 +153,42 @@ describe HomeController do
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
+
context 'rollbar_scrub_headers' do
|
157
|
+
|
158
|
+
it 'should filter authentication by default' do
|
159
|
+
headers = {
|
160
|
+
'HTTP_AUTHORIZATION' => 'some-user',
|
161
|
+
'HTTP_USER_AGENT' => 'spec'
|
162
|
+
}
|
163
|
+
|
164
|
+
filtered = controller.send( :rollbar_headers, headers )
|
165
|
+
filtered.should == {
|
166
|
+
"Authorization" => "*********",
|
167
|
+
"User-Agent" => "spec"
|
168
|
+
}
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'should filter custom headers' do
|
172
|
+
Rollbar.configure do |config|
|
173
|
+
config.scrub_headers = ['Auth', 'Token']
|
174
|
+
end
|
175
|
+
|
176
|
+
headers = {
|
177
|
+
'HTTP_AUTH' => 'auth-value',
|
178
|
+
'HTTP_TOKEN' => 'token-value',
|
179
|
+
'HTTP_CONTENT_TYPE' => 'text/html'
|
180
|
+
}
|
181
|
+
|
182
|
+
filtered = controller.send( :rollbar_headers, headers )
|
183
|
+
filtered.should == {
|
184
|
+
"Auth" => "**********",
|
185
|
+
"Token" => "***********",
|
186
|
+
"Content-Type" => "text/html"
|
187
|
+
}
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
191
|
+
|
156
192
|
context "rollbar_request_url" do
|
157
193
|
it "should build simple http urls" do
|
158
194
|
req = controller.request
|
data/spec/dummyapp/db/seeds.rb
CHANGED
@@ -7,6 +7,6 @@
|
|
7
7
|
# Mayor.create(name: 'Emanuel', city: cities.first)
|
8
8
|
puts 'SETTING UP DEFAULT USER LOGIN'
|
9
9
|
user = User.create! :username => 'user1', :email => 'user@example.com'
|
10
|
-
puts
|
10
|
+
puts "New user created: #{user.username}"
|
11
11
|
user2 = User.create! :username => 'user2', :email => 'user2@example.com'
|
12
|
-
puts
|
12
|
+
puts "New user created: #{user2.username}"
|
data/spec/rollbar_spec.rb
CHANGED
@@ -324,6 +324,53 @@ describe Rollbar do
|
|
324
324
|
end
|
325
325
|
end
|
326
326
|
end
|
327
|
+
|
328
|
+
context 'report_message_with_request' do
|
329
|
+
before(:each) do
|
330
|
+
configure
|
331
|
+
Rollbar.configure do |config|
|
332
|
+
config.logger = logger_mock
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
let(:logger_mock) { double("Rails.logger").as_null_object }
|
337
|
+
let(:user) { User.create(:email => 'email@example.com', :encrypted_password => '', :created_at => Time.now, :updated_at => Time.now) }
|
338
|
+
|
339
|
+
it 'should report simple messages' do
|
340
|
+
logger_mock.should_receive(:info).with('[Rollbar] Scheduling payload')
|
341
|
+
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
342
|
+
Rollbar.report_message_with_request("Test message")
|
343
|
+
|
344
|
+
Rollbar.last_report[:request].should be_nil
|
345
|
+
Rollbar.last_report[:person].should be_nil
|
346
|
+
end
|
347
|
+
|
348
|
+
it 'should report messages with request, person data and extra data' do
|
349
|
+
Rollbar.last_report = nil
|
350
|
+
|
351
|
+
logger_mock.should_receive(:info).with('[Rollbar] Scheduling payload')
|
352
|
+
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
353
|
+
|
354
|
+
request_data = {
|
355
|
+
:params => {:foo => 'bar'}
|
356
|
+
}
|
357
|
+
|
358
|
+
person_data = {
|
359
|
+
:id => 123,
|
360
|
+
:username => 'username'
|
361
|
+
}
|
362
|
+
|
363
|
+
extra_data = {
|
364
|
+
:extra_foo => 'extra_bar'
|
365
|
+
}
|
366
|
+
|
367
|
+
Rollbar.report_message_with_request("Test message", 'info', request_data, person_data, extra_data)
|
368
|
+
|
369
|
+
Rollbar.last_report[:request].should == request_data
|
370
|
+
Rollbar.last_report[:person].should == person_data
|
371
|
+
Rollbar.last_report[:body][:message][:extra_foo].should == 'extra_bar'
|
372
|
+
end
|
373
|
+
end
|
327
374
|
|
328
375
|
context 'payload_destination' do
|
329
376
|
before(:each) do
|
@@ -628,7 +675,7 @@ describe Rollbar do
|
|
628
675
|
end
|
629
676
|
|
630
677
|
it 'should send a failsafe message if the payload cannot be reduced enough' do
|
631
|
-
logger_mock.should_receive(:error).with(
|
678
|
+
logger_mock.should_receive(:error).with(/Sending failsafe response due to Could not send payload due to it being too large after truncating attempts/)
|
632
679
|
logger_mock.should_receive(:info).with('[Rollbar] Success')
|
633
680
|
|
634
681
|
orig_max = Rollbar::MAX_PAYLOAD_SIZE
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rollbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Rue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- lib/rollbar/active_record_extension.rb
|
150
150
|
- lib/rollbar/better_errors.rb
|
151
151
|
- lib/rollbar/capistrano.rb
|
152
|
+
- lib/rollbar/capistrano3.rb
|
152
153
|
- lib/rollbar/configuration.rb
|
153
154
|
- lib/rollbar/delay/sidekiq.rb
|
154
155
|
- lib/rollbar/delay/sucker_punch.rb
|
@@ -167,6 +168,7 @@ files:
|
|
167
168
|
- lib/rollbar/rake_tasks.rb
|
168
169
|
- lib/rollbar/request_data_extractor.rb
|
169
170
|
- lib/rollbar/sidekiq.rb
|
171
|
+
- lib/rollbar/tasks/rollbar.cap
|
170
172
|
- lib/rollbar/util.rb
|
171
173
|
- lib/rollbar/version.rb
|
172
174
|
- rollbar.gemspec
|