measure_method 0.1.0 → 0.2.0

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