rollbar 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 629a976cd25d915aed389102855a596e77a6c8af
4
+ data.tar.gz: 4dee53826f0b68b41031143156df4f74ed5a1edb
5
+ SHA512:
6
+ metadata.gz: 682326d676624bf665d6ecef1b0b5fb5d7040dd2acd44126b41070684fdb5a341d2464302e6fc6fc6ce5493483fe6dedf07359303d738c654f23463e773d75ee
7
+ data.tar.gz: c56866b778b5209a2d273340c54ff01d7b6c72de07a986b38072d23e3e0e3c018440b5b2bb31c09c48383c25ed131aedfe0534662b72afbcb19c68228f191034
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.5.1
4
+
5
+ Bug fixes:
6
+
7
+ - Fixed crashes when `Configuration#custom_data_method` fails. Now a report for that crash will be reported also. See [#235](https://github.com/rollbar/rollbar-gem/pull/235)
8
+
3
9
  ## 1.5.0
4
10
 
5
11
  Bug fixes:
data/README.md CHANGED
@@ -1,15 +1,19 @@
1
- # Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.5.0)](https://travis-ci.org/rollbar/rollbar-gem/branches)
1
+ # Rollbar notifier for Ruby [![Build Status](https://api.travis-ci.org/rollbar/rollbar-gem.svg?branch=v1.5.1)](https://travis-ci.org/rollbar/rollbar-gem/branches)
2
2
 
3
3
  <!-- RemoveNext -->
4
- Ruby gem for reporting exceptions, errors, and log messages to [Rollbar](https://rollbar.com).
4
+ [Rollbar](https://rollbar.com) is an error tracking service for Ruby and other languages. The Rollbar service will alert you of problems with your code and help you understand them in a ways never possible before. We love it and we hope you will too.
5
+
6
+ This is the Ruby library for Rollbar. It will instrument many kinds of Ruby applications automatically at the framework level. You can also make direct calls to send exceptions and messages to Rollbar.
5
7
 
6
8
  <!-- Sub:[TOC] -->
7
9
 
8
- ## Installation
10
+ ## Getting Started
9
11
 
10
12
  Add this line to your application's Gemfile:
11
13
 
12
- gem 'rollbar', '~> 1.5.0
14
+ ```ruby
15
+ gem 'rollbar', '~> 1.5.1'
16
+ ```
13
17
 
14
18
  And then execute:
15
19
 
@@ -30,11 +34,9 @@ $ rails generate rollbar POST_SERVER_ITEM_ACCESS_TOKEN
30
34
  <!-- RemoveNextIfProject -->
31
35
  Be sure to replace ```POST_SERVER_ITEM_ACCESS_TOKEN``` with your project's ```post_server_item``` access token, which you can find in the Rollbar.com interface.
32
36
 
33
- That's all you need to use Rollbar with Rails.
34
-
35
- That will create the file ```config/initializers/rollbar.rb```, which holds the configuration values (currently just your access token).
37
+ That will create the file ```config/initializers/rollbar.rb```, which initializes Rollbar and holds your access token and other configuration values.
36
38
 
37
- If you want to store your access token outside of your repo, run the same command without arguments, and create an environment variable ```ROLLBAR_ACCESS_TOKEN``` that holds your server-side access token:
39
+ If you want to store your access token outside of your repo, run the same command without arguments and create an environment variable ```ROLLBAR_ACCESS_TOKEN``` that holds your server-side access token:
38
40
 
39
41
  ```bash
40
42
  $ rails generate rollbar
@@ -51,9 +53,10 @@ $ heroku config:add ROLLBAR_ACCESS_TOKEN=POST_SERVER_ITEM_ACCESS_TOKEN
51
53
 
52
54
  That's all you need to use Rollbar with Rails.
53
55
 
56
+
54
57
  ### If using Rack
55
58
 
56
- Be sure to initialize Rollbar with your access token somewhere during startup:
59
+ Initialize Rollbar with your access token somewhere during startup:
57
60
 
58
61
  ```ruby
59
62
  Rollbar.configure do |config|
@@ -63,13 +66,12 @@ Rollbar.configure do |config|
63
66
  end
64
67
  ```
65
68
 
66
-
67
69
  <!-- RemoveNextIfProject -->
68
70
  Be sure to replace ```POST_SERVER_ITEM_ACCESS_TOKEN``` with your project's ```post_server_item``` access token, which you can find in the Rollbar.com interface.
69
71
 
70
72
  This monkey patches `Rack::Builder` to work with Rollbar automatically.
71
73
 
72
- For more control, disable the monkey patch in the rollbar configuration:
74
+ For more control, disable the monkey patch:
73
75
 
74
76
  ```ruby
75
77
  Rollbar.configure do |config|
@@ -109,7 +111,7 @@ Uncaught exceptions in Rails controllers will be automatically reported to Rollb
109
111
 
110
112
  You can use one of `Rollbar.log(level, ...)`, `Rollbar.debug()`, `Rollbar.info()`, `Rollbar.warning()`, `Rollbar.error()` and `Rollbar.critical()` to report exceptions and messages.
111
113
 
112
- The methods take in any number of arguments, but the last exception is used as the reported exception, the last string is used as the message/description, and the last hash is used as the extra data.
114
+ The methods accept any number of arguments. The last exception is used as the reported exception, the last string is used as the message/description, and the last hash is used as the extra data.
113
115
 
114
116
  For example:
115
117
 
@@ -290,7 +292,7 @@ class RollbarPersonData
290
292
  end
291
293
  end
292
294
 
293
- # You can add the middleware to your application, for ex:
295
+ # You can add the middleware to your application, for example:
294
296
 
295
297
  class App < Sinatra::Base
296
298
  use Rollbar::Middleware::Sinatra
@@ -353,6 +355,8 @@ config.custom_data_method = lambda {
353
355
 
354
356
  This data will appear in the Occurrences tab and on the Occurrence Detail pages in the Rollbar interface.
355
357
 
358
+ If your `custom_data_method` crashes while reporting an error, Rollbar will report that new error and will attach its uuid URL to the parent error report.
359
+
356
360
  ## Exception level filters
357
361
 
358
362
  By default, all uncaught exceptions are reported at the "error" level, except for the following, which are reported at "warning" level:
@@ -646,7 +650,7 @@ Some users have reported problems with Zeus when ```rake``` was not explicitly i
646
650
 
647
651
  You can find upgrading notes in [UPGRADING.md](UPGRADING.md).
648
652
 
649
- ## Issues
653
+ ## Known Issues
650
654
 
651
655
  We've received some issues from users having problems when they use [Oj](https://github.com/ohler55/oj) as the JSON serialization library with [MultiJson](https://github.com/intridea/multi_json). To avoid these problems, we recommend upgrading to Oj version 2.11.0:
652
656
 
@@ -35,6 +35,9 @@ module Rollbar
35
35
 
36
36
  class Notifier
37
37
  attr_accessor :configuration
38
+ attr_accessor :last_report
39
+
40
+ @file_semaphore = Mutex.new
38
41
 
39
42
  def initialize(parent_notifier = nil, payload_options = nil)
40
43
  if parent_notifier
@@ -48,11 +51,6 @@ module Rollbar
48
51
  end
49
52
  end
50
53
 
51
- attr_writer :configuration
52
- attr_accessor :last_report
53
-
54
- @file_semaphore = Mutex.new
55
-
56
54
  # Similar to configure below, but used only internally within the gem
57
55
  # to configure it without initializing any of the third party hooks
58
56
  def preconfigure
@@ -75,6 +73,17 @@ module Rollbar
75
73
  self
76
74
  end
77
75
 
76
+ # Returns a new notifier with same configuration options
77
+ # but it sets Configuration#safely to true.
78
+ # We are using this flag to avoid having inifite loops
79
+ # when evaluating some custom user methods.
80
+ def safely
81
+ new_notifier = scope
82
+ new_notifier.configuration.safely = true
83
+
84
+ new_notifier
85
+ end
86
+
78
87
  # Turns off reporting for the given block.
79
88
  #
80
89
  # @example
@@ -195,6 +204,15 @@ module Rollbar
195
204
  report_internal_error(e)
196
205
  end
197
206
 
207
+ def custom_data
208
+ data = configuration.custom_data_method.call
209
+ Rollbar::Util.deep_copy(data)
210
+ rescue => e
211
+ return {} if configuration.safely?
212
+
213
+ report_custom_data_error(e)
214
+ end
215
+
198
216
  private
199
217
 
200
218
  def ignored?(exception, use_exception_level_filters = false)
@@ -312,10 +330,7 @@ module Rollbar
312
330
  end
313
331
 
314
332
  def build_payload_body(message, exception, extra)
315
- unless configuration.custom_data_method.nil?
316
- custom = Rollbar::Util.deep_copy(configuration.custom_data_method.call)
317
- extra = Rollbar::Util.deep_merge(custom, extra || {})
318
- end
333
+ extra = Rollbar::Util.deep_merge(custom_data, extra || {}) if custom_data_method?
319
334
 
320
335
  if exception
321
336
  build_payload_body_exception(message, exception, extra)
@@ -324,6 +339,20 @@ module Rollbar
324
339
  end
325
340
  end
326
341
 
342
+ def custom_data_method?
343
+ !!configuration.custom_data_method
344
+ end
345
+
346
+ def report_custom_data_error(e)
347
+ data = safely.error(e)
348
+
349
+ return {} unless data[:uuid]
350
+
351
+ uuid_url = uuid_rollbar_url(data)
352
+
353
+ { :_error_in_custom_data_method => uuid_url }
354
+ end
355
+
327
356
  def build_payload_body_exception(message, exception, extra)
328
357
  traces = trace_chain(exception)
329
358
 
@@ -650,10 +679,15 @@ module Rollbar
650
679
 
651
680
  def log_instance_link(data)
652
681
  if data[:uuid]
653
- log_info "[Rollbar] Details: #{configuration.web_base}/instance/uuid?uuid=#{data[:uuid]} (only available if report was successful)"
682
+ uuid_url = uuid_rollbar_url(data)
683
+ log_info "[Rollbar] Details: #{uuid_url} (only available if report was successful)"
654
684
  end
655
685
  end
656
686
 
687
+ def uuid_rollbar_url(data)
688
+ "#{configuration.web_base}/instance/uuid?uuid=#{data[:uuid]}"
689
+ end
690
+
657
691
  def logger
658
692
  @logger ||= LoggerProxy.new(configuration.logger)
659
693
  end
@@ -700,6 +734,10 @@ module Rollbar
700
734
  @configuration ||= Configuration.new
701
735
  end
702
736
 
737
+ def safely?
738
+ configuration.safely?
739
+ end
740
+
703
741
  def require_hooks
704
742
  return if configuration.disable_monkey_patch
705
743
  wrap_delayed_worker
@@ -30,6 +30,7 @@ module Rollbar
30
30
  attr_accessor :report_dj_data
31
31
  attr_accessor :request_timeout
32
32
  attr_accessor :root
33
+ attr_accessor :safely
33
34
  attr_accessor :scrub_fields
34
35
  attr_accessor :uncaught_exception_level
35
36
  attr_accessor :scrub_headers
@@ -40,6 +41,8 @@ module Rollbar
40
41
 
41
42
  attr_reader :project_gem_paths
42
43
 
44
+ alias_method :safely?, :safely
45
+
43
46
  DEFAULT_ENDPOINT = 'https://api.rollbar.com/api/1/item/'
44
47
  DEFAULT_WEB_BASE = 'https://rollbar.com'
45
48
 
@@ -75,6 +78,7 @@ module Rollbar
75
78
  :confirm_password, :password_confirmation, :secret_token]
76
79
  @uncaught_exception_level = 'error'
77
80
  @scrub_headers = ['Authorization']
81
+ @safely = false
78
82
  @use_async = false
79
83
  @use_eventmachine = false
80
84
  @web_base = DEFAULT_WEB_BASE
@@ -1,3 +1,3 @@
1
1
  module Rollbar
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
@@ -13,6 +13,10 @@ end
13
13
 
14
14
  describe Rollbar do
15
15
  let(:notifier) { Rollbar.notifier }
16
+ before do
17
+ Rollbar.unconfigure
18
+ configure
19
+ end
16
20
 
17
21
  context 'when notifier has been used before configure it' do
18
22
  before do
@@ -287,11 +291,6 @@ describe Rollbar do
287
291
  end
288
292
 
289
293
  context 'build_payload' do
290
- after(:each) do
291
- Rollbar.unconfigure
292
- configure
293
- end
294
-
295
294
  context 'a basic payload' do
296
295
  let(:extra_data) { {:key => 'value', :hash => {:inner_key => 'inner_value'}} }
297
296
  let(:payload) { notifier.send(:build_payload, 'info', 'message', nil, extra_data) }
@@ -409,6 +408,32 @@ describe Rollbar do
409
408
  payload['data'][:body][:message][:extra][:f].should == 'f'
410
409
  end
411
410
 
411
+ context 'with custom_data_method crashing' do
412
+ next unless defined?(SecureRandom) and SecureRandom.respond_to?(:uuid)
413
+
414
+ let(:crashing_exception) { StandardError.new }
415
+ let(:custom_method) { proc { raise crashing_exception } }
416
+ let(:extra) { { :foo => :bar } }
417
+ let(:custom_data_report) do
418
+ { :_error_in_custom_data_method => SecureRandom.uuid }
419
+ end
420
+ let(:expected_extra) { extra.merge(custom_data_report) }
421
+
422
+ before do
423
+ notifier.configure do |config|
424
+ config.custom_data_method = custom_method
425
+ end
426
+
427
+ expect(notifier).to receive(:report_custom_data_error).once.and_return(custom_data_report)
428
+ end
429
+
430
+ it 'doesnt crash the report' do
431
+ payload = notifier.send(:build_payload, 'info', 'message', nil, extra)
432
+
433
+ expect(payload['data'][:body][:message][:extra]).to be_eql(expected_extra)
434
+ end
435
+ end
436
+
412
437
  it 'should include project_gem_paths' do
413
438
  notifier.configure do |config|
414
439
  config.project_gems = ['rails', 'rspec']
@@ -1664,6 +1689,35 @@ describe Rollbar do
1664
1689
  end
1665
1690
  end
1666
1691
 
1692
+ describe '#custom_data' do
1693
+ before do
1694
+ Rollbar.configure do |config|
1695
+ config.custom_data_method = proc { raise 'this-will-raise' }
1696
+ end
1697
+
1698
+ expect_any_instance_of(Rollbar::Notifier).to receive(:error).and_return(report_data)
1699
+ end
1700
+
1701
+ context 'with uuid in reported data' do
1702
+ next unless defined?(SecureRandom) and SecureRandom.respond_to?(:uuid)
1703
+
1704
+ let(:report_data) { { :uuid => SecureRandom.uuid } }
1705
+ let(:expected_url) { "https://rollbar.com/instance/uuid?uuid=#{report_data[:uuid]}" }
1706
+
1707
+ it 'returns the uuid in :_error_in_custom_data_method' do
1708
+ expect(notifier.custom_data).to be_eql(:_error_in_custom_data_method => expected_url)
1709
+ end
1710
+ end
1711
+
1712
+ context 'without uuid in reported data' do
1713
+ let(:report_data) { { :some => 'other-data' } }
1714
+
1715
+ it 'returns the uuid in :_error_in_custom_data_method' do
1716
+ expect(notifier.custom_data).to be_eql({})
1717
+ end
1718
+ end
1719
+ end
1720
+
1667
1721
  # configure with some basic params
1668
1722
  def configure
1669
1723
  reconfigure_notifier
metadata CHANGED
@@ -1,206 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rollbar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
5
- prerelease:
4
+ version: 1.5.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Rollbar, Inc.
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-04-08 00:00:00.000000000 Z
11
+ date: 2015-04-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: multi_json
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.3'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '1.3'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rails
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: 3.0.0
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: 3.0.0
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec-rails
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: 2.14.0
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.14.0
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: database_cleaner
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ~>
59
+ - - "~>"
68
60
  - !ruby/object:Gem::Version
69
61
  version: 1.0.0
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ~>
66
+ - - "~>"
76
67
  - !ruby/object:Gem::Version
77
68
  version: 1.0.0
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: girl_friday
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - ">="
84
74
  - !ruby/object:Gem::Version
85
75
  version: 0.11.1
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - ">="
92
81
  - !ruby/object:Gem::Version
93
82
  version: 0.11.1
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: sucker_punch
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ">="
100
88
  - !ruby/object:Gem::Version
101
89
  version: 1.0.0
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - ">="
108
95
  - !ruby/object:Gem::Version
109
96
  version: 1.0.0
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: sidekiq
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - ">="
116
102
  - !ruby/object:Gem::Version
117
103
  version: 2.13.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - ">="
124
109
  - !ruby/object:Gem::Version
125
110
  version: 2.13.0
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: genspec
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - ">="
132
116
  - !ruby/object:Gem::Version
133
117
  version: 0.2.8
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - ">="
140
123
  - !ruby/object:Gem::Version
141
124
  version: 0.2.8
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: sinatra
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - ">="
148
130
  - !ruby/object:Gem::Version
149
131
  version: '0'
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - ">="
156
137
  - !ruby/object:Gem::Version
157
138
  version: '0'
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: resque
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - ">="
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - ">="
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  - !ruby/object:Gem::Dependency
175
154
  name: delayed_job
176
155
  requirement: !ruby/object:Gem::Requirement
177
- none: false
178
156
  requirements:
179
- - - ! '>='
157
+ - - ">="
180
158
  - !ruby/object:Gem::Version
181
159
  version: '0'
182
160
  type: :development
183
161
  prerelease: false
184
162
  version_requirements: !ruby/object:Gem::Requirement
185
- none: false
186
163
  requirements:
187
- - - ! '>='
164
+ - - ">="
188
165
  - !ruby/object:Gem::Version
189
166
  version: '0'
190
167
  - !ruby/object:Gem::Dependency
191
168
  name: rake
192
169
  requirement: !ruby/object:Gem::Requirement
193
- none: false
194
170
  requirements:
195
- - - ! '>='
171
+ - - ">="
196
172
  - !ruby/object:Gem::Version
197
173
  version: 0.9.0
198
174
  type: :development
199
175
  prerelease: false
200
176
  version_requirements: !ruby/object:Gem::Requirement
201
- none: false
202
177
  requirements:
203
- - - ! '>='
178
+ - - ">="
204
179
  - !ruby/object:Gem::Version
205
180
  version: 0.9.0
206
181
  description: Rails plugin to catch and send exceptions to Rollbar
@@ -211,8 +186,8 @@ executables:
211
186
  extensions: []
212
187
  extra_rdoc_files: []
213
188
  files:
214
- - .gitignore
215
- - .travis.yml
189
+ - ".gitignore"
190
+ - ".travis.yml"
216
191
  - Appraisals
217
192
  - CHANGELOG.md
218
193
  - Gemfile
@@ -355,27 +330,26 @@ files:
355
330
  homepage: https://github.com/rollbar/rollbar-gem
356
331
  licenses:
357
332
  - MIT
333
+ metadata: {}
358
334
  post_install_message:
359
335
  rdoc_options: []
360
336
  require_paths:
361
337
  - lib
362
338
  required_ruby_version: !ruby/object:Gem::Requirement
363
- none: false
364
339
  requirements:
365
- - - ! '>='
340
+ - - ">="
366
341
  - !ruby/object:Gem::Version
367
342
  version: '0'
368
343
  required_rubygems_version: !ruby/object:Gem::Requirement
369
- none: false
370
344
  requirements:
371
- - - ! '>='
345
+ - - ">="
372
346
  - !ruby/object:Gem::Version
373
347
  version: '0'
374
348
  requirements: []
375
349
  rubyforge_project:
376
- rubygems_version: 1.8.23
350
+ rubygems_version: 2.3.0
377
351
  signing_key:
378
- specification_version: 3
352
+ specification_version: 4
379
353
  summary: Reports exceptions to Rollbar
380
354
  test_files:
381
355
  - spec/controllers/home_controller_spec.rb