smoke_detector 0.0.4 → 0.1.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 (37) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +1 -2
  3. data/lib/smoke_detector/engine.rb +4 -2
  4. data/lib/smoke_detector/middleware/javascript_monitors.rb +36 -0
  5. data/lib/smoke_detector/providers/airbrake.rb +2 -1
  6. data/lib/smoke_detector/providers/provider.rb +12 -0
  7. data/lib/smoke_detector/providers/rollbar.rb +18 -1
  8. data/lib/smoke_detector/providers.rb +2 -2
  9. data/lib/smoke_detector/version.rb +1 -1
  10. data/lib/smoke_detector.rb +1 -0
  11. data/spec/dummy/app/controllers/widgets_controller.rb +3 -0
  12. data/spec/dummy/config/initializers/smoke_detector.rb +1 -0
  13. data/spec/dummy/config/routes.rb +1 -0
  14. data/spec/dummy/db/development.sqlite3 +0 -0
  15. data/spec/dummy/db/test.sqlite3 +0 -0
  16. data/spec/dummy/log/development.log +5 -8619
  17. data/spec/dummy/log/test.log +1251 -13557
  18. data/spec/models/providers/airbrake_spec.rb +1 -1
  19. data/spec/models/providers/provider_spec.rb +2 -1
  20. data/spec/models/providers/rollbar_spec.rb +2 -2
  21. data/spec/models/providers_spec.rb +5 -4
  22. data/spec/models/smoke_detector_spec.rb +2 -2
  23. data/spec/requests/aibrake_config_spec.rb +1 -1
  24. data/spec/requests/middleware/javascript_monitors_spec.rb +38 -0
  25. data/spec/requests/multi_provider_config_spec.rb +2 -2
  26. data/spec/requests/rollbar_config_spec.rb +1 -1
  27. metadata +32 -49
  28. data/spec/dummy/tmp/cache/assets/C5F/270/sprockets%2F32a6d17723de2976b8456753922862fc +0 -0
  29. data/spec/dummy/tmp/cache/assets/CA3/870/sprockets%2F703bc6444d2a153516ad9804dc24b467 +0 -0
  30. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  31. data/spec/dummy/tmp/cache/assets/D2F/510/sprockets%2F42e50ab0277768533b1cad2237fb5ade +0 -0
  32. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  33. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  34. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  35. data/spec/dummy/tmp/cache/assets/DAE/CC0/sprockets%2Fcf340221edaaed61b5821abd28052dbb +0 -0
  36. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  37. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SmokeDetector::Providers::Airbrake do
4
- let(:provider) { SmokeDetector::Providers::Airbrake.new('api_key', settings) }
4
+ let(:provider) { SmokeDetector::Providers::Airbrake.new('api_key', nil, settings) }
5
5
  let(:settings) { {} }
6
6
  let(:err) { double('error', backtrace: [], message: 'bad news') }
7
7
  let(:data) { {custom: :data} }
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SmokeDetector::Providers::Provider do
4
- let(:provider) { SmokeDetector::Providers::Provider.new }
4
+ let(:api_key) { 'some_key' }
5
+ let(:provider) { SmokeDetector::Providers::Provider.new(api_key) }
5
6
 
6
7
  describe '#alert' do
7
8
  subject { provider.alert(Exception.new) }
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SmokeDetector::Providers::Rollbar do
4
- let(:provider) { SmokeDetector::Providers::Rollbar.new('api_key', settings) }
4
+ let(:provider) { SmokeDetector::Providers::Rollbar.new('api_key', nil, settings) }
5
5
  let(:settings) { {} }
6
6
  let(:err) { StandardError.new('error') }
7
7
  let(:data) { {custom: :data} }
8
8
 
9
9
  describe '#initialize' do
10
10
  describe 'environment setting' do
11
- before { SmokeDetector::Providers::Rollbar.new('api_key', settings) }
11
+ before { SmokeDetector::Providers::Rollbar.new('api_key', nil, settings) }
12
12
 
13
13
  it 'defaults to the Rails environment' do
14
14
  expect(::Rollbar.configuration.environment).to eql Rails.env
@@ -3,6 +3,7 @@ require 'spec_helper'
3
3
  describe SmokeDetector do
4
4
  let(:provider) { :rollbar }
5
5
  let(:api_key) { 'some_key' }
6
+ let(:client_api_key) { nil }
6
7
  let(:provider_class) { SmokeDetector::Providers::Rollbar }
7
8
 
8
9
  describe '.register_provider' do
@@ -13,7 +14,7 @@ describe SmokeDetector do
13
14
  end
14
15
 
15
16
  it 'adds the provider to the SmokeDetector providers' do
16
- SmokeDetector.register_provider(provider, api_key)
17
+ SmokeDetector.register_provider(provider, api_key, client_api_key)
17
18
  SmokeDetector.providers.last.should be_a provider_class
18
19
  end
19
20
  end
@@ -24,7 +25,7 @@ describe SmokeDetector do
24
25
  end
25
26
 
26
27
  it 'raises an error' do
27
- expect { SmokeDetector.register_provider(provider, api_key) }.to raise_error SmokeDetector::ProviderRegistrationError
28
+ expect { SmokeDetector.register_provider(provider, api_key, client_api_key) }.to raise_error SmokeDetector::ProviderRegistrationError
28
29
  end
29
30
  end
30
31
 
@@ -34,7 +35,7 @@ describe SmokeDetector do
34
35
  let(:provider) { :not_a_provider }
35
36
 
36
37
  it 'raises an error' do
37
- expect { SmokeDetector.register_provider(provider, api_key) }.to raise_error SmokeDetector::ProviderRegistrationError
38
+ expect { SmokeDetector.register_provider(provider, api_key, client_api_key) }.to raise_error SmokeDetector::ProviderRegistrationError
38
39
  end
39
40
  end
40
41
  end
@@ -45,7 +46,7 @@ describe SmokeDetector do
45
46
  context "with a supported provider" do
46
47
  context 'that is registered' do
47
48
  before do
48
- SmokeDetector.register_provider(provider, api_key)
49
+ SmokeDetector.register_provider(provider, api_key, client_api_key)
49
50
  end
50
51
 
51
52
  it { should == true }
@@ -5,8 +5,8 @@ describe SmokeDetector do
5
5
  let(:err) { Exception.new }
6
6
 
7
7
  before do
8
- SmokeDetector.register_provider(:airbrake, 'key')
9
- SmokeDetector.register_provider(:rollbar, 'key')
8
+ SmokeDetector.register_provider(:airbrake, 'key', 'client_key')
9
+ SmokeDetector.register_provider(:rollbar, 'key', 'client_key')
10
10
  SmokeDetector.providers.size.should > 1
11
11
  end
12
12
 
@@ -4,7 +4,7 @@ describe 'Airbrake config: An exception' do
4
4
 
5
5
  before do
6
6
  SmokeDetector.instance_variable_set(:@providers, [])
7
- SmokeDetector.register_provider(:airbrake, 'key')
7
+ SmokeDetector.register_provider(:airbrake, 'key', nil)
8
8
  end
9
9
 
10
10
  it_behaves_like 'Airbrake integrated error handler'
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+
4
+ describe SmokeDetector::JavaScriptMonitors do
5
+
6
+ before do
7
+ SmokeDetector.instance_variable_set(:@providers, [])
8
+ # FIXME There is only one instance of the middleware class so the @monitoring_code instance
9
+ # variable is only set once on app init and there's no easy way to access that
10
+ # instance.
11
+ ObjectSpace.each_object(SmokeDetector::JavaScriptMonitors) do |jsm|
12
+ jsm.instance_variable_set(:@monitoring_code, nil)
13
+ end
14
+ end
15
+
16
+ context 'with a Rollbar client API key configured' do
17
+ before do
18
+ SmokeDetector.register_provider(:rollbar, 'key', 'client_key')
19
+ end
20
+
21
+ it 'injects the Rollbar JS snippet into the <head>' do
22
+ get '/widgets'
23
+ expect(Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")')).to_not be_empty
24
+ end
25
+ end
26
+
27
+ context 'without a Rollbar client API key configured' do
28
+ before do
29
+ SmokeDetector.register_provider(:rollbar, 'key', nil)
30
+ end
31
+
32
+ it 'does not inject the Rollbar JS snippet into the <head>' do
33
+ get '/widgets'
34
+ expect(Nokogiri::HTML(response.body).css('head script:contains("_rollbarConfig")')).to be_empty
35
+ end
36
+ end
37
+
38
+ end
@@ -5,8 +5,8 @@ describe 'Multi-provider config: An exception' do
5
5
  before do
6
6
  SmokeDetector.instance_variable_set(:@providers, [])
7
7
 
8
- SmokeDetector.register_provider(:rollbar, 'key')
9
- SmokeDetector.register_provider(:airbrake, 'key')
8
+ SmokeDetector.register_provider(:rollbar, 'key', nil)
9
+ SmokeDetector.register_provider(:airbrake, 'key', nil)
10
10
  SmokeDetector.providers.size.should == 2
11
11
  end
12
12
 
@@ -5,7 +5,7 @@ describe 'Rollbar config: An exception' do
5
5
  before do
6
6
  SmokeDetector.instance_variable_set(:@providers, [])
7
7
 
8
- SmokeDetector.register_provider(:rollbar, 'key')
8
+ SmokeDetector.register_provider(:rollbar, 'key', nil)
9
9
  end
10
10
 
11
11
  it_behaves_like 'Rollbar integrated error handler'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smoke_detector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Friedrich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-10 00:00:00.000000000 Z
11
+ date: 2014-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -53,115 +53,115 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.11'
55
55
  - !ruby/object:Gem::Dependency
56
- name: sqlite3
56
+ name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: sqlite3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec-rails
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry
98
+ name: rspec-rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: pry-nav
112
+ name: pry
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ! '>='
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ! '>='
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry-rescue
126
+ name: pry-nav
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ! '>='
129
+ - - '>='
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ! '>='
136
+ - - '>='
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: pry-stack_explorer
140
+ name: pry-rescue
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ! '>='
143
+ - - '>='
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ! '>='
150
+ - - '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: ruby-debug19
154
+ name: pry-stack_explorer
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ! '>='
157
+ - - '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ! '>='
164
+ - - '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  description: Provides a single interface for posting errors to multiple error reporting
@@ -175,6 +175,7 @@ files:
175
175
  - lib/smoke_detector/controller_methods.rb
176
176
  - lib/smoke_detector/engine.rb
177
177
  - lib/smoke_detector/exceptions.rb
178
+ - lib/smoke_detector/middleware/javascript_monitors.rb
178
179
  - lib/smoke_detector/providers/airbrake.rb
179
180
  - lib/smoke_detector/providers/provider.rb
180
181
  - lib/smoke_detector/providers/rollbar.rb
@@ -222,22 +223,13 @@ files:
222
223
  - spec/dummy/Rakefile
223
224
  - spec/dummy/README.rdoc
224
225
  - spec/dummy/script/rails
225
- - spec/dummy/tmp/cache/assets/C5F/270/sprockets%2F32a6d17723de2976b8456753922862fc
226
- - spec/dummy/tmp/cache/assets/CA3/870/sprockets%2F703bc6444d2a153516ad9804dc24b467
227
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
228
- - spec/dummy/tmp/cache/assets/D2F/510/sprockets%2F42e50ab0277768533b1cad2237fb5ade
229
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
230
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
231
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
232
- - spec/dummy/tmp/cache/assets/DAE/CC0/sprockets%2Fcf340221edaaed61b5821abd28052dbb
233
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
234
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
235
226
  - spec/models/providers/airbrake_spec.rb
236
227
  - spec/models/providers/provider_spec.rb
237
228
  - spec/models/providers/rollbar_spec.rb
238
229
  - spec/models/providers_spec.rb
239
230
  - spec/models/smoke_detector_spec.rb
240
231
  - spec/requests/aibrake_config_spec.rb
232
+ - spec/requests/middleware/javascript_monitors_spec.rb
241
233
  - spec/requests/multi_provider_config_spec.rb
242
234
  - spec/requests/rollbar_config_spec.rb
243
235
  - spec/spec_helper.rb
@@ -252,17 +244,17 @@ require_paths:
252
244
  - lib
253
245
  required_ruby_version: !ruby/object:Gem::Requirement
254
246
  requirements:
255
- - - ! '>='
247
+ - - '>='
256
248
  - !ruby/object:Gem::Version
257
249
  version: '0'
258
250
  required_rubygems_version: !ruby/object:Gem::Requirement
259
251
  requirements:
260
- - - ! '>='
252
+ - - '>='
261
253
  - !ruby/object:Gem::Version
262
254
  version: '0'
263
255
  requirements: []
264
256
  rubyforge_project:
265
- rubygems_version: 2.1.4
257
+ rubygems_version: 2.0.14
266
258
  signing_key:
267
259
  specification_version: 4
268
260
  summary: Errors Alerts
@@ -304,22 +296,13 @@ test_files:
304
296
  - spec/dummy/Rakefile
305
297
  - spec/dummy/README.rdoc
306
298
  - spec/dummy/script/rails
307
- - spec/dummy/tmp/cache/assets/C5F/270/sprockets%2F32a6d17723de2976b8456753922862fc
308
- - spec/dummy/tmp/cache/assets/CA3/870/sprockets%2F703bc6444d2a153516ad9804dc24b467
309
- - spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953
310
- - spec/dummy/tmp/cache/assets/D2F/510/sprockets%2F42e50ab0277768533b1cad2237fb5ade
311
- - spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705
312
- - spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655
313
- - spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6
314
- - spec/dummy/tmp/cache/assets/DAE/CC0/sprockets%2Fcf340221edaaed61b5821abd28052dbb
315
- - spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994
316
- - spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
317
299
  - spec/models/providers/airbrake_spec.rb
318
300
  - spec/models/providers/provider_spec.rb
319
301
  - spec/models/providers/rollbar_spec.rb
320
302
  - spec/models/providers_spec.rb
321
303
  - spec/models/smoke_detector_spec.rb
322
304
  - spec/requests/aibrake_config_spec.rb
305
+ - spec/requests/middleware/javascript_monitors_spec.rb
323
306
  - spec/requests/multi_provider_config_spec.rb
324
307
  - spec/requests/rollbar_config_spec.rb
325
308
  - spec/spec_helper.rb