tick 0.1.0 → 0.1.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.
- data/Gemfile.lock +1 -1
- data/README.md +6 -1
- data/lib/tick/version.rb +1 -1
- data/lib/tick.rb +14 -7
- data/spec/tick_spec.rb +37 -5
- metadata +3 -3
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@ Tick
|
|
4
4
|
About
|
5
5
|
------
|
6
6
|
|
7
|
-
Tick benchmark your method and print
|
7
|
+
Tick benchmark your method and print it in color
|
8
8
|
|
9
9
|
|
10
10
|
Installation
|
@@ -19,6 +19,9 @@ Usge
|
|
19
19
|
def foo
|
20
20
|
end
|
21
21
|
tick :foo
|
22
|
+
tick :foo, :message => "benchmark for foo"
|
23
|
+
tick :foo, :message => lambda {|class_name, method_name| " #{class_name}-#{method_name}"}
|
24
|
+
|
22
25
|
|
23
26
|
|
24
27
|
Configuration
|
@@ -51,6 +54,7 @@ Customize messages:
|
|
51
54
|
Tick.time_message = lambda { |sec| "COST (#{sec})" }
|
52
55
|
|
53
56
|
Default:
|
57
|
+
|
54
58
|
* desc_message: "TICK: method '#{method_name.to_s}' in class '#{self.class.name}'"
|
55
59
|
* time_message: "(#{sec.to_s} ms)"
|
56
60
|
|
@@ -61,6 +65,7 @@ Set 256 color:
|
|
61
65
|
Tick.time_color = "#FFC482"
|
62
66
|
|
63
67
|
Default:
|
68
|
+
|
64
69
|
* desc_color: yellow
|
65
70
|
* time_color: cyan
|
66
71
|
|
data/lib/tick/version.rb
CHANGED
data/lib/tick.rb
CHANGED
@@ -40,7 +40,7 @@ module Tick
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.desc_message
|
43
|
-
@desc_message
|
43
|
+
@desc_message ||= lambda {|class_name, method_name| "TICK: method '#{method_name}' in class '#{class_name}'"}
|
44
44
|
end
|
45
45
|
|
46
46
|
def self.desc_message=(block)
|
@@ -58,7 +58,7 @@ module Tick
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def self.time_message
|
61
|
-
@time_message
|
61
|
+
@time_message ||= lambda { |sec| "(#{sec.to_s} s)" }
|
62
62
|
end
|
63
63
|
|
64
64
|
def self.time_message=(block)
|
@@ -86,13 +86,22 @@ module Tick
|
|
86
86
|
|
87
87
|
|
88
88
|
module ClassMethods
|
89
|
-
def tick(method_name)
|
89
|
+
def tick(method_name, options = {})
|
90
90
|
alias_method "#{method_name}_without_tick", method_name
|
91
91
|
define_method method_name do
|
92
92
|
result = nil
|
93
93
|
if Tick.enabled
|
94
94
|
sec = Benchmark.realtime { result = self.send("#{method_name}_without_tick") }
|
95
|
-
|
95
|
+
|
96
|
+
desc = nil
|
97
|
+
if options[:message].kind_of?(Proc)
|
98
|
+
desc = options[:message].call(self.class.name, method_name)
|
99
|
+
else
|
100
|
+
desc = options[:message] || Tick.desc_message.call(self.class.name, method_name)
|
101
|
+
end
|
102
|
+
|
103
|
+
time = Tick.time_message.call(sec)
|
104
|
+
_log_benchmark(desc, time)
|
96
105
|
else
|
97
106
|
result = self.send("#{method_name}_without_tick")
|
98
107
|
end
|
@@ -102,9 +111,7 @@ module Tick
|
|
102
111
|
end
|
103
112
|
|
104
113
|
module InstanceMethods
|
105
|
-
def _log_benchmark(
|
106
|
-
desc = Tick.desc_message.nil? ? "TICK: method '#{method_name.to_s}' in class '#{self.class.name}'" : Tick.desc_message.call(self.class.name, method_name)
|
107
|
-
time = Tick.time_message.nil? ? "(#{sec.to_s} ms)" : Tick.time_message.call(sec)
|
114
|
+
def _log_benchmark(desc, time)
|
108
115
|
message = self._colorize_desc(desc)
|
109
116
|
message << " "
|
110
117
|
message << self._colorize_time(time)
|
data/spec/tick_spec.rb
CHANGED
@@ -78,11 +78,16 @@ describe Tick do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
describe "A class include Tick" do
|
81
|
-
before do
|
82
|
-
|
81
|
+
before(:each) do
|
82
|
+
class TestClass;end
|
83
|
+
@klass = TestClass
|
83
84
|
@klass.send(:include, Tick)
|
84
85
|
end
|
85
86
|
|
87
|
+
after(:each) do
|
88
|
+
Object.send(:remove_const, :TestClass)
|
89
|
+
end
|
90
|
+
|
86
91
|
it "should have class method tick" do
|
87
92
|
@klass.should respond_to :tick
|
88
93
|
end
|
@@ -96,6 +101,32 @@ describe "A class include Tick" do
|
|
96
101
|
lambda {@klass.send(:tick, :xxx)}.should raise_error
|
97
102
|
end
|
98
103
|
|
104
|
+
describe "tick with options" do
|
105
|
+
before(:each) do
|
106
|
+
@klass.class_eval do
|
107
|
+
def default
|
108
|
+
sleep 0.5
|
109
|
+
end
|
110
|
+
end
|
111
|
+
@instance = @klass.new
|
112
|
+
@instance.should respond_to :default
|
113
|
+
end
|
114
|
+
|
115
|
+
it "support customize message for each method" do
|
116
|
+
message = "method default"
|
117
|
+
@klass.send(:tick, :default, :message => message)
|
118
|
+
mock(@instance)._log_benchmark(message, anything)
|
119
|
+
@instance.default
|
120
|
+
end
|
121
|
+
|
122
|
+
it "support customize lambda message for each method" do
|
123
|
+
message = "method default"
|
124
|
+
@klass.send(:tick, :default, :message => lambda {|class_name, method_name| "m:#{method_name}" })
|
125
|
+
mock(@instance)._log_benchmark("m:default", anything)
|
126
|
+
@instance.default
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
99
130
|
describe "tick on :default method" do
|
100
131
|
before do
|
101
132
|
@klass.class_eval do
|
@@ -110,7 +141,7 @@ describe "A class include Tick" do
|
|
110
141
|
end
|
111
142
|
|
112
143
|
it "should log time when default method be called" do
|
113
|
-
mock(@instance)._log_benchmark(
|
144
|
+
mock(@instance)._log_benchmark(Tick.desc_message.call("TestClass","default"), anything)
|
114
145
|
@instance.default
|
115
146
|
end
|
116
147
|
|
@@ -121,6 +152,7 @@ describe "A class include Tick" do
|
|
121
152
|
@instance.default
|
122
153
|
Tick.enabled = old_value
|
123
154
|
end
|
155
|
+
|
124
156
|
end
|
125
157
|
|
126
158
|
describe "#_log_benchmark" do
|
@@ -142,7 +174,7 @@ describe "A class include Tick" do
|
|
142
174
|
message << " "
|
143
175
|
message << time
|
144
176
|
mock(Tick.logger).debug(message)
|
145
|
-
@instance._log_benchmark(
|
177
|
+
@instance._log_benchmark(desc, time)
|
146
178
|
end
|
147
179
|
|
148
180
|
it "should print custom message if set custom message" do
|
@@ -155,7 +187,7 @@ describe "A class include Tick" do
|
|
155
187
|
message << " "
|
156
188
|
message << time
|
157
189
|
mock(Tick.logger).debug(message)
|
158
|
-
@instance._log_benchmark(
|
190
|
+
@instance._log_benchmark(desc, time)
|
159
191
|
end
|
160
192
|
end
|
161
193
|
|
metadata
CHANGED