crashbreak 0.9.5 → 0.9.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ccf2481e1c5893e9ed41bbcec7a57adade15abf1
4
- data.tar.gz: 91e98a300ed88abeef023e169df88cbc89fe1b62
3
+ metadata.gz: d943a7d2f3a78353805545a04922acdf8e841d79
4
+ data.tar.gz: 5eb0864882ebfcc111be7bfd9e2639b0e449fd67
5
5
  SHA512:
6
- metadata.gz: 8759aee358aa1273aee4f3a08f06a0c25712fcd93b851ac19606deebf5aacaa606c41dcb846e8ac41125f3b0f74c603484c24a49a3681d60b15a13e1e4253b85
7
- data.tar.gz: 24453d50056e35ae6705564eb20d77a2360da515860cb59b10d103e537710eb2bb1655243603e4684d038fc8c842aef04fe265eb0d2f1acd15c8d0dee9c6ce1c
6
+ metadata.gz: 801a7c44cc6ea929bc54aeecfb0b89b45989c91006a487d215e9b46b7b9d56cf7b9dcff13c1175d326bb763be0a63e99ab3392dad323830aff1b035302dab90b
7
+ data.tar.gz: 23cc67630df928d9b638a758563c7300115d4eb1bafd507375dada7f1bc2bdf53419603ce97b12249e9150606e9399f9493618bc567495e9435a45bd1c981979
@@ -28,4 +28,6 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'request_store', '>= 0'
29
29
  spec.add_runtime_dependency 'octokit', '>= 0'
30
30
  spec.add_runtime_dependency 'aws-sdk', '~> 2'
31
+ spec.add_runtime_dependency 'sidekiq', '>= 0'
32
+ spec.add_runtime_dependency 'oj', '>= 0'
31
33
  end
@@ -3,6 +3,9 @@ require 'faraday'
3
3
  require 'request_store'
4
4
  require 'octokit'
5
5
  require 'aws-sdk'
6
+ require 'sidekiq'
7
+ require 'oj'
8
+
6
9
  require 'crashbreak/version'
7
10
  require 'crashbreak/exception_notifier'
8
11
  require 'crashbreak/formatters/basic_formatter'
@@ -19,6 +22,8 @@ require 'crashbreak/dumpers_data_repository'
19
22
  require 'crashbreak/request_parser'
20
23
  require 'crashbreak/github_integration_service'
21
24
  require 'crashbreak/AWS'
25
+ require 'crashbreak/async_exception_notifier'
26
+ require 'crashbreak/tiny_exception_notifier'
22
27
 
23
28
  require 'dumpers/database_dumper'
24
29
  require 'dumpers/request_dumper'
@@ -0,0 +1,16 @@
1
+ module Crashbreak
2
+ class AsyncExceptionNotifier
3
+ include Sidekiq::Worker
4
+
5
+ def perform(request_store_data)
6
+ RequestStore.store.merge!(Oj.load(request_store_data))
7
+ exception_notifier.notify
8
+ end
9
+
10
+ private
11
+
12
+ def exception_notifier
13
+ @exception_notifier ||= ExceptionNotifier.new
14
+ end
15
+ end
16
+ end
@@ -11,13 +11,40 @@ module Crashbreak
11
11
  RequestStore.store[:exception] = exception
12
12
  store_variables_from_env env
13
13
 
14
- exception_notifier.notify
14
+ notify_about_exception
15
15
  raise
16
16
  end
17
17
  end
18
18
 
19
19
  private
20
20
 
21
+ def notify_about_exception
22
+ if exception_notifier.respond_to?(:perform_async)
23
+ prepare_request_store_for_serialization
24
+ exception_notifier.perform_async Oj.dump(RequestStore.store)
25
+ else
26
+ exception_notifier.notify
27
+ end
28
+ end
29
+
30
+ def prepare_request_store_for_serialization
31
+ request_hash = {}
32
+
33
+ RequestStore.store[:request].env.each do |key, value|
34
+ request_hash[key] = value.to_s
35
+ end
36
+
37
+ RequestStore.store[:request] = request(request_hash)
38
+
39
+ controller = RequestStore.store[:controller].dup
40
+
41
+ [:@_env, :@_request, :@_response, :@_lookup_context].each do |variable_symbol|
42
+ controller.instance_variable_set(variable_symbol, nil)
43
+ end
44
+
45
+ RequestStore.store[:controller] = controller
46
+ end
47
+
21
48
  def exception_notifier
22
49
  Crashbreak.configure.exception_notifier
23
50
  end
@@ -0,0 +1,18 @@
1
+ module Crashbreak
2
+ class TinyExceptionNotifier < ExceptionNotifier
3
+ def notify(exception = RequestStore.store[:exception])
4
+ RequestStore.store[:exception] = exception
5
+ exceptions_repository.create serialize_exception
6
+ end
7
+
8
+ private
9
+
10
+ def serializers
11
+ [BasicInformationFormatter.new]
12
+ end
13
+
14
+ def dumpers
15
+ []
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module Crashbreak
2
- VERSION = '0.9.5'
2
+ VERSION = '0.9.6'
3
3
  end
@@ -5,7 +5,10 @@ namespace :crashbreak do
5
5
  begin
6
6
  raise CrashbreakTestError.new('If you see this message everything works fine!')
7
7
  rescue CrashbreakTestError => error
8
- Crashbreak.configure.exception_notifier.notify error
8
+ RequestStore.store[:exception] = error
9
+ RequestStore.store[:request] = Rack::Request.new({})
10
+
11
+ Crashbreak.configure.exception_notifier.notify
9
12
  end
10
13
 
11
14
  puts 'Done, now check if error exists on crashbreak.com!'
@@ -0,0 +1,19 @@
1
+ describe Crashbreak::AsyncExceptionNotifier do
2
+ subject { described_class.new }
3
+ let(:request_data) { Oj.dump(Hash[request: 'request_info', current_user: 'current_user_data']) }
4
+
5
+ before(:each) do
6
+ expect_any_instance_of(Crashbreak::ExceptionNotifier).to receive(:notify).and_return(true)
7
+ end
8
+
9
+ it 'calls notify on exception notifier' do
10
+ subject.perform(request_data)
11
+ end
12
+
13
+ it 'sets request_data in RequestStore' do
14
+ expect(RequestStore.store[:request]).to eq('request_info')
15
+ expect(RequestStore.store[:current_user]).to eq('current_user_data')
16
+
17
+ subject.perform(request_data)
18
+ end
19
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crashbreak
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.5
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Janeczek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-10 00:00:00.000000000 Z
11
+ date: 2015-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,6 +164,34 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '2'
167
+ - !ruby/object:Gem::Dependency
168
+ name: sidekiq
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: oj
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
167
195
  description: Maybe later... :)
168
196
  email:
169
197
  - michal.janeczek@ymail.com
@@ -181,6 +209,7 @@ files:
181
209
  - crashbreak.gemspec
182
210
  - lib/crashbreak.rb
183
211
  - lib/crashbreak/AWS.rb
212
+ - lib/crashbreak/async_exception_notifier.rb
184
213
  - lib/crashbreak/config/configurable.rb
185
214
  - lib/crashbreak/config/configurator.rb
186
215
  - lib/crashbreak/dumpers_data_repository.rb
@@ -195,6 +224,7 @@ files:
195
224
  - lib/crashbreak/formatters/summary_formatter.rb
196
225
  - lib/crashbreak/github_integration_service.rb
197
226
  - lib/crashbreak/request_parser.rb
227
+ - lib/crashbreak/tiny_exception_notifier.rb
198
228
  - lib/crashbreak/version.rb
199
229
  - lib/dumpers/database_dumper.rb
200
230
  - lib/dumpers/request_dumper.rb
@@ -208,6 +238,7 @@ files:
208
238
  - lib/tasks/crashbreak.rake
209
239
  - spec/dumpers/request_dumper_spec.rb
210
240
  - spec/features/sending_error_report_spec.rb
241
+ - spec/lib/async_exception_notifier_spec.rb
211
242
  - spec/lib/config/configurable_spec.rb
212
243
  - spec/lib/config/configurator_spec.rb
213
244
  - spec/lib/dumpers_data_repository_spec.rb
@@ -254,6 +285,7 @@ summary: Take a break from crashes!
254
285
  test_files:
255
286
  - spec/dumpers/request_dumper_spec.rb
256
287
  - spec/features/sending_error_report_spec.rb
288
+ - spec/lib/async_exception_notifier_spec.rb
257
289
  - spec/lib/config/configurable_spec.rb
258
290
  - spec/lib/config/configurator_spec.rb
259
291
  - spec/lib/dumpers_data_repository_spec.rb