method_profiler 1.0.0 → 1.0.1

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.
@@ -0,0 +1,9 @@
1
+ # Backports Object#singleton_class from Ruby 1.9.2
2
+ class Object
3
+ # Returns the singleton class of an object.
4
+ #
5
+ # @return [Object] The object's singleton class.
6
+ def singleton_class
7
+ class << self; self end
8
+ end
9
+ end if RUBY_VERSION < "1.9.2"
@@ -1,4 +1,5 @@
1
1
  require 'method_profiler/report'
2
+ require 'method_profiler/core_ext/object'
2
3
 
3
4
  require 'benchmark'
4
5
 
@@ -73,7 +74,8 @@ module MethodProfiler
73
74
  def profile(method, singleton = false, &block)
74
75
  method_name = singleton ? ".#{method}" : "##{method}"
75
76
  result = nil
76
- elapsed_time = benchmark(result, &block).to_s.match(/\(\s*([^\)]+)\)/)[1].to_f
77
+ elapsed_time, result = benchmark(result, &block)
78
+ elapsed_time = elapsed_time.to_s.match(/\(\s*([^\)]+)\)/)[1].to_f
77
79
  @data[method_name] << elapsed_time
78
80
  result
79
81
  end
@@ -85,11 +87,11 @@ module MethodProfiler
85
87
  total_calls = records.size
86
88
  average = records.reduce(:+) / total_calls
87
89
  results << {
88
- method: method,
89
- min: records.min,
90
- max: records.max,
91
- average: average,
92
- total_calls: total_calls
90
+ :method => method,
91
+ :min => records.min,
92
+ :max => records.max,
93
+ :average => average,
94
+ :total_calls => total_calls
93
95
  }
94
96
  end
95
97
 
@@ -99,7 +101,8 @@ module MethodProfiler
99
101
  private
100
102
 
101
103
  def benchmark(result, &block)
102
- Benchmark.measure { result = block.call }
104
+ elapsed_time = Benchmark.measure { result = block.call }
105
+ return elapsed_time, result
103
106
  end
104
107
  end
105
108
  end
@@ -68,20 +68,20 @@ module MethodProfiler
68
68
  "MethodProfiler results for: #{@obj}",
69
69
  Hirb::Helpers::Table.render(
70
70
  to_a,
71
- headers: {
72
- method: "Method",
73
- min: "Min Time",
74
- max: "Max Time",
75
- average: "Average Time",
76
- total_calls: "Total Calls"
71
+ :headers => {
72
+ :method => "Method",
73
+ :min => "Min Time",
74
+ :max => "Max Time",
75
+ :average => "Average Time",
76
+ :total_calls => "Total Calls"
77
77
  },
78
- fields: [:method, :min, :max, :average, :total_calls],
79
- filters: {
80
- min: :to_milliseconds,
81
- max: :to_milliseconds,
82
- average: :to_milliseconds
78
+ :fields => [:method, :min, :max, :average, :total_calls],
79
+ :filters => {
80
+ :min => :to_milliseconds,
81
+ :max => :to_milliseconds,
82
+ :average => :to_milliseconds
83
83
  },
84
- description: false
84
+ :description => false
85
85
  )
86
86
  ].join("\n")
87
87
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "method_profiler"
5
- s.version = "1.0.0"
5
+ s.version = "1.0.1"
6
6
  s.authors = ["Jimmy Cuadra"]
7
7
  s.email = ["jimmy@jimmycuadra.com"]
8
8
  s.homepage = "https://github.com/change/method_profiler"
@@ -11,6 +11,14 @@ describe MethodProfiler::Profiler do
11
11
  petition.should_not respond_to(:foo_with_profiling_with_profiling)
12
12
  end
13
13
 
14
+ it "class methods should properly return values" do
15
+ Petition.guys.should == "sup"
16
+ end
17
+
18
+ it "instance method should properly return values" do
19
+ petition.baz.should == "blah"
20
+ end
21
+
14
22
  describe "#report" do
15
23
  it "returns a new Report object" do
16
24
  profiler.report.should be_an_instance_of MethodProfiler::Report
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: method_profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-04 00:00:00.000000000 Z
12
+ date: 2012-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: hirb
16
- requirement: &70181816945620 !ruby/object:Gem::Requirement
16
+ requirement: &70256884010560 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70181816945620
24
+ version_requirements: *70256884010560
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70181816945220 !ruby/object:Gem::Requirement
27
+ requirement: &70256884010160 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70181816945220
35
+ version_requirements: *70256884010160
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: simplecov
38
- requirement: &70181816944760 !ruby/object:Gem::Requirement
38
+ requirement: &70256884009700 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70181816944760
46
+ version_requirements: *70256884009700
47
47
  description: MethodProfiler observes your code and generates reports about the methods
48
48
  that were run and how long they took.
49
49
  email:
@@ -58,6 +58,7 @@ files:
58
58
  - README.md
59
59
  - Rakefile
60
60
  - lib/method_profiler.rb
61
+ - lib/method_profiler/core_ext/object.rb
61
62
  - lib/method_profiler/hirb.rb
62
63
  - lib/method_profiler/profiler.rb
63
64
  - lib/method_profiler/report.rb