advisor 0.3.0.pre → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2470ec31f434a00b661314a334584b9749007f7
4
- data.tar.gz: d3943ae3457133660cec580e15d5244e563dcaab
3
+ metadata.gz: 07274c88a6cc965df236304e2cadec348a89b609
4
+ data.tar.gz: 7008dc31d29852a09368e9f3add2e84e1dc6c61a
5
5
  SHA512:
6
- metadata.gz: 133f2ee3eb5042bbc0ddf0448e7b9389ec1af136dd4fb680cf2a940235739890cd28bf648cfc26b9428da389ce18de5a3714056599f695e1e4ae67132bab543c
7
- data.tar.gz: 93960c7d757c8179afcbd2997682a10fe9c43e57e184b9719b8ee0a5631d6007e3226c014e1d432926eaa681f7eeaa0e5d0038071931e0bf1dd857b1fd1e499b
6
+ metadata.gz: 1c3de77e3ba71106ce800367fedf8a49665425b09dc607d243438bd7e3b1e93f1ebd2924f95596567f47d60a5919d327810bcb49527a50d03f0c00de5db9b932
7
+ data.tar.gz: bddee9a5ae3777933c009f6c8d911ad188142e2132720174a937072151a39e3708e8f2b8680ae620a7dbc60f4c1878163652545a0b9ccb941e170b0d21679dd4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- advisor (0.2.1)
4
+ advisor (0.3.0)
5
5
  metriks
6
6
 
7
7
  GEM
@@ -5,8 +5,10 @@ module Advisor
5
5
  class CallLogger
6
6
  class << self
7
7
  attr_accessor :default_logger
8
+ attr_accessor :catch_exception
8
9
  end
9
10
  self.default_logger = Logger.new(STDOUT)
11
+ self.catch_exception = false
10
12
 
11
13
  def initialize(object, method, call_args, **opts)
12
14
  @object = object
@@ -24,7 +26,7 @@ module Advisor
24
26
  def call
25
27
  logger.info(success_message)
26
28
  yield
27
- rescue => e
29
+ rescue exception_class => e
28
30
  logger.warn(failure_message(e))
29
31
  raise
30
32
  end
@@ -36,7 +38,8 @@ module Advisor
36
38
  end
37
39
 
38
40
  def failure_message(ex)
39
- call_message('Failed: ', "\n#{ex}")
41
+ backtrace = ["\n", ex.to_s] + ex.backtrace
42
+ call_message('Failed: ', backtrace.join("\n"))
40
43
  end
41
44
 
42
45
  def call_message(prefix, suffix = '')
@@ -64,6 +67,10 @@ module Advisor
64
67
  def id
65
68
  "[id=#{object.id}]" if object.respond_to?(:id)
66
69
  end
70
+
71
+ def exception_class
72
+ CallLogger.catch_exception ? Exception : StandardError
73
+ end
67
74
  end
68
75
  end
69
76
  end
@@ -1,3 +1,3 @@
1
1
  module Advisor
2
- VERSION = '0.3.0.pre'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -35,24 +35,61 @@ Called: OpenStruct#the_meaning_of_life(\"the universe\", \"and everything\")"
35
35
  call
36
36
  end
37
37
 
38
- context 'when yielding the block raises an exception' do
38
+ context 'when yielding the block raises an error' do
39
39
  let(:block) { -> () { fail 'deu ruim!' } }
40
40
 
41
41
  let(:log_message) do
42
- "[Time=#{Time.now}][Thread=#{Thread.current.object_id}][id=42]\
43
- Failed: OpenStruct#the_meaning_of_life(\"the universe\", \"and everything\")
44
- deu ruim!"
42
+ /\[Time=#{Time.now}\]\[Thread=#{Thread.current.object_id}\]\
43
+ \[id=42\]Failed: OpenStruct#the_meaning_of_life\(\"the universe\", \"and\
44
+ everything\"\).*/
45
45
  end
46
46
 
47
- before { allow(logger).to receive(:warn) }
47
+ let(:error_message) { /deu ruim!/ }
48
+
49
+ let(:catch_exception) { false }
50
+
51
+ before do
52
+ allow(logger).to receive(:warn)
53
+ allow(CallLogger).to receive(:catch_exception)
54
+ .and_return(catch_exception)
55
+ end
48
56
 
49
57
  it { expect { call }.to raise_error(StandardError, 'deu ruim!') }
50
58
 
51
59
  it do
52
60
  expect(logger).to receive(:warn).with(log_message)
61
+ expect { call }.to raise_error
62
+ end
53
63
 
64
+ it do
65
+ expect(logger).to receive(:warn).with(error_message)
54
66
  expect { call }.to raise_error
55
67
  end
68
+
69
+ context 'when the error is not a StandardError' do
70
+ let(:block) { -> { fail Exception, 'deu muito ruim!' } }
71
+
72
+ let(:error_message) { /deu muito ruim!/ }
73
+
74
+ it do
75
+ expect(logger).not_to receive(:warn).with(log_message)
76
+ expect { call }.to raise_error(Exception, 'deu muito ruim!')
77
+ end
78
+
79
+ context 'when catching exceptions' do
80
+ let(:catch_exception) { true }
81
+
82
+ it do
83
+ expect(logger).to receive(:warn).with(log_message)
84
+ expect { call }.to raise_error(Exception, 'deu muito ruim!')
85
+ end
86
+
87
+ it do
88
+ expect(logger).to receive(:warn).with(error_message)
89
+ expect { call }.to raise_error(Exception, 'deu muito ruim!')
90
+ end
91
+ end
92
+ end
56
93
  end
57
94
  end
58
95
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: advisor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.pre
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Renan Ranelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-14 00:00:00.000000000 Z
11
+ date: 2015-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metriks
@@ -152,9 +152,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
152
  version: '2.0'
153
153
  required_rubygems_version: !ruby/object:Gem::Requirement
154
154
  requirements:
155
- - - ">"
155
+ - - ">="
156
156
  - !ruby/object:Gem::Version
157
- version: 1.3.1
157
+ version: '0'
158
158
  requirements: []
159
159
  rubyforge_project:
160
160
  rubygems_version: 2.2.2