smoke_detector 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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