measure_method 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/measure_method.rb +12 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0994c6dc85f1dfe4653e442975d1f75b48cb6566
4
- data.tar.gz: 0e94fc45032add7147267d87e92dbc1e7da99904
3
+ metadata.gz: 34e669e5e28063b1da45f9415b5282cd2db8993e
4
+ data.tar.gz: 2c618a6d112c9cd72cc6471c958dcb4bba59b3a3
5
5
  SHA512:
6
- metadata.gz: 003eb4eae20dcb6edebbe7302bfc8f191c5296db3aabee7daf7466cb0a0a0e4adf94eb030541ae63629b829b71385799709a884e5fccfe7ecf66e872368c519e
7
- data.tar.gz: 19d60a34fc9a0e26e97c67848f93ce2c9e6a91e379d0b41837fe4979d5db2f3b43011fd7ee281303c7fd4d167562d1b28052361c4bfa68488bf82378111c78bd
6
+ metadata.gz: 51e3fa78fffc8e98690c2f0909ab24e76bda44b843c5d05aed4dcd35c842c12c8d23a382134923a35060f01d3e1e0eeee3acc40fb5cc42bff7150ac50e3bf343
7
+ data.tar.gz: 304f68fb34a3f50114b7d1fd5d12589cc158ee2cba9948289ccdb0b386cdf2a589207e0129a87792bda8e5a9686122cdb8aa7cef9d719d9fe19949883665f3d3
@@ -18,7 +18,6 @@ module MeasureMethod
18
18
 
19
19
  module ClassMethods
20
20
  def measure_methods(*args)
21
- @measured_methods ||= []
22
21
  @methods_to_measure ||= []
23
22
  @methods_to_measure += args.map(&:to_sym)
24
23
  end
@@ -31,21 +30,28 @@ module MeasureMethod
31
30
  define_measure_method(name, self.singleton_class)
32
31
  end
33
32
 
33
+ protected
34
+
35
+ def methods_to_measure
36
+ methods = @methods_to_measure || []
37
+ if defined?(superclass.methods_to_measure)
38
+ methods += superclass.methods_to_measure
39
+ end
40
+ methods
41
+ end
42
+
34
43
  def define_measure_method(name, obj)
35
44
  return if @adding_measurers
36
- return if @measured_methods.include?(name)
37
45
  @adding_measurers = true
38
- if @methods_to_measure.include? name.to_sym
46
+ if methods_to_measure.include? name.to_sym
39
47
  unmeasured_name = "unmeasured_#{name}"
40
48
  obj.send(:alias_method, unmeasured_name, name)
41
49
 
42
50
  obj.send(:define_method, name) do |*args, &block|
43
51
  Metrics.measure_block(
44
52
  name: Measurement.name(self, name)
45
- ) {send unmeasured_name, *args, &block}
53
+ ) { obj.instance_method(unmeasured_name).bind(self).call *args, &block}
46
54
  end
47
-
48
- @measured_methods << name
49
55
  end
50
56
  @adding_measurers = nil
51
57
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: measure_method
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Rykwalder
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-17 00:00:00.000000000 Z
12
+ date: 2014-10-20 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Measure ruby methods and report their metrics
15
15
  email: eric@chain.com