advisor 0.2.1 → 0.3.0.pre

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: 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