advisor 0.2.1 → 0.3.0.pre

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: bd0bff4c56325afe9169e9a9e6846f39a5b5050d
4
- data.tar.gz: 7ed6cd9a3a9e940ae3c62b216da94c333b7910be
3
+ metadata.gz: d2470ec31f434a00b661314a334584b9749007f7
4
+ data.tar.gz: d3943ae3457133660cec580e15d5244e563dcaab
5
5
  SHA512:
6
- metadata.gz: d2d760a6c6ee40363b916cb8233b488a0bfae01a021836695a6801e736751fcfd34106b93f49afdcc5f1dfc8e06fcb2402372a15f0182cb3b5e397c44a2e92dd
7
- data.tar.gz: 1d33b22f3299bc1176a536771bcdcec3f756c4b389cc7bbdba6513c8519daeab17fb28758de33c861d9816b69305251d376cedb5ca91a210ada34e99e55b2e86
6
+ metadata.gz: 133f2ee3eb5042bbc0ddf0448e7b9389ec1af136dd4fb680cf2a940235739890cd28bf648cfc26b9428da389ce18de5a3714056599f695e1e4ae67132bab543c
7
+ data.tar.gz: 93960c7d757c8179afcbd2997682a10fe9c43e57e184b9719b8ee0a5631d6007e3226c014e1d432926eaa681f7eeaa0e5d0038071931e0bf1dd857b1fd1e499b
@@ -4,23 +4,17 @@ require 'metriks'
4
4
  module Advisor
5
5
  module Advices
6
6
  class Metriks
7
- class << self
8
- attr_accessor :default_logger
9
- end
10
- self.default_logger = Logger.new(STDOUT)
11
-
12
7
  def initialize(object, method, _call_args, **opts)
13
8
  @object = object
14
9
  @method = method
15
10
 
16
11
  @instruments = Array(opts.fetch(:with)).uniq
17
- @logger = opts[:logger] || Metriks.default_logger
18
12
 
19
13
  fail 'No instruments defined' if instruments.empty?
20
14
  fail 'Unknown Instrument' unless instruments.all?(&known_instrument?)
21
15
  end
22
16
 
23
- attr_reader :object, :method, :logger, :instruments
17
+ attr_reader :object, :method, :instruments
24
18
 
25
19
  INSTRUMENTS = [
26
20
  :counter, :timer, :gauge, :call_meter, :result_meter
@@ -32,10 +26,8 @@ module Advisor
32
26
 
33
27
  def call
34
28
  result = timed? ? timer.time { yield } : yield
35
- result.tap { instruments.each(&measure(result)) }
36
- rescue => e
37
- logger.warn(e)
38
- raise
29
+ ensure
30
+ instruments.each(&measure(result))
39
31
  end
40
32
 
41
33
  private
@@ -1,3 +1,3 @@
1
1
  module Advisor
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.0.pre'
3
3
  end
@@ -170,6 +170,46 @@ module Advisor
170
170
 
171
171
  it_behaves_like 'instruments && measuring'
172
172
  end
173
+
174
+ context 'when the block throws an exception' do
175
+ let(:block) { -> { fail 'i be error' } }
176
+
177
+ let(:instruments) { %i(gauge timer counter) }
178
+
179
+ it 'raises the error raised when yielding the block' do
180
+ expect { call }.to raise_error(RuntimeError, 'i be error')
181
+ end
182
+
183
+ it 'times the method call' do
184
+ expect(::Metriks).to receive(:timer)
185
+ .with('OpenStruct#the_force_awakens_timer')
186
+ .and_call_original
187
+
188
+ expect { call }.to raise_error
189
+ end
190
+
191
+ it 'does measure the execution with a nil result' do
192
+ expect(advice).to receive(:measure)
193
+ .with(nil)
194
+ .once
195
+
196
+ expect { call }.to raise_error
197
+ end
198
+
199
+ it 'does not measure with a gauge' do
200
+ expect(::Metriks).not_to receive(:gauge)
201
+
202
+ expect { call }.to raise_error
203
+ end
204
+
205
+ it 'does increment the counter' do
206
+ expect(::Metriks).to receive(:counter)
207
+ .with('OpenStruct#the_force_awakens_counter')
208
+ .and_call_original
209
+
210
+ expect { call }.to raise_error
211
+ end
212
+ end
173
213
  end
174
214
  end
175
215
  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.2.1
4
+ version: 0.3.0.pre
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-05 00:00:00.000000000 Z
11
+ date: 2015-05-14 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: '0'
157
+ version: 1.3.1
158
158
  requirements: []
159
159
  rubyforge_project:
160
160
  rubygems_version: 2.2.2