timify 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +181 -0
- data/lib/timify.rb +48 -39
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87e3f8e1a0aeef9369b178a6b1d7a9981df9c3dc
|
4
|
+
data.tar.gz: b10790ad239464397fa7c2d817fdfd07b8b8b6bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80742ca97d2174ad3645fc2b267b24e2cbac846a9f6ce159ceab48e35cde71a285c43a485ea89f575d50002451cf3575cbc3bd704b0cfb1e81cf65fd14bc206b
|
7
|
+
data.tar.gz: ff925acdae4d2d6fb6912adfd378099b0e1fca3b7840c3c1a96a8dd1f5b70b0840585f12f4377bde6d68e6908ac1897e5c83f084a73a8ca42f5ea5b2a13dc4c7
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2017 Mario Ruiz
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
# Timify
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/timify.svg)](https://rubygems.org/gems/timify)
|
4
|
+
|
5
|
+
Ruby gem to calculate the time running from one location to another inside your code and report summaries
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'timify'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install timify
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
### initialize
|
26
|
+
You need to supply a name for your Timify instance.
|
27
|
+
You can have all the Timify instances you want at the same time.
|
28
|
+
```ruby
|
29
|
+
t = Timify.new :create_user
|
30
|
+
t.show = false
|
31
|
+
t.min_time_to_show = 0.5
|
32
|
+
```
|
33
|
+
min_time_to_show: minimum time to show the elapsed time when calling 'add' method
|
34
|
+
|
35
|
+
show: print out results on screen
|
36
|
+
|
37
|
+
you can supply those parameters also:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
t = Timify.new :create_user, show: true, min_time_to_show: 0.3
|
41
|
+
```
|
42
|
+
|
43
|
+
The scopes of the instances can be even global so you can measure the elapsed times between different classes, methods... on your code.
|
44
|
+
|
45
|
+
### add
|
46
|
+
|
47
|
+
Adds a new point to count the time elapsed. It will count from the last 'add' call or Timify creation in case of the first 'add'.
|
48
|
+
|
49
|
+
You can supply a label that will summarize all the ones with the same label
|
50
|
+
|
51
|
+
The output of this method will be the time elapsed in seconds (float).
|
52
|
+
|
53
|
+
Examples:
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
t=Timify.new :example
|
57
|
+
t.add; run_sqls; t.add :database
|
58
|
+
t.add
|
59
|
+
#some processes
|
60
|
+
t.add
|
61
|
+
#some processes
|
62
|
+
send_email_alert if t.add > 0.2
|
63
|
+
#some processes
|
64
|
+
do_log(t.totals[:message]) if t.add > 0.5
|
65
|
+
```
|
66
|
+
|
67
|
+
### totals
|
68
|
+
|
69
|
+
Returns all data for this instance
|
70
|
+
|
71
|
+
In case json parameter supplied as true, the output will be in json format instead of a hash.
|
72
|
+
|
73
|
+
The output hash contains:
|
74
|
+
|
75
|
+
name: (String) name given for this instance'
|
76
|
+
|
77
|
+
total_time: (float) total elapsed time from initialization to last 'add' call
|
78
|
+
|
79
|
+
started: (Time)
|
80
|
+
|
81
|
+
finished: (Time)
|
82
|
+
|
83
|
+
message: (String) a printable friendly message giving all information
|
84
|
+
|
85
|
+
locations, labels, ranges: (Hash) the resultant hash contains:
|
86
|
+
|
87
|
+
secs: (float) number of seconds
|
88
|
+
|
89
|
+
percent: (integer) percentage in reference to the total time
|
90
|
+
|
91
|
+
count: (integer) number of times
|
92
|
+
|
93
|
+
locations: (Hash) All summary data by location where was called
|
94
|
+
|
95
|
+
labels: (Hash) All summary data by label given on 'add' method
|
96
|
+
|
97
|
+
ranges: (Hash) All summary data by ranges where was called, from last 'add' call to current 'add' call
|
98
|
+
|
99
|
+
|
100
|
+
Example of output:
|
101
|
+
```ruby
|
102
|
+
{ :name=>:add_customer_wrong,
|
103
|
+
:total_time=>4.461446,
|
104
|
+
:started=>2017-11-06 16:10:53 +0000,
|
105
|
+
:finished=>2017-11-06 16:10:57 +0000,
|
106
|
+
:locations=>{
|
107
|
+
"/add_customer.rb:509"=>{:secs=>0.0, :percent=>0, :count=>1},
|
108
|
+
"/add_customer.rb:529"=>{:secs=>0.008001, :percent=>0, :count=>1},
|
109
|
+
"/add_customer.rb:532"=>{:secs=>0.212021, :percent=>5, :count=>1},
|
110
|
+
"/add_customer.rb:569"=>{:secs=>0.006001, :percent=>0, :count=>1},
|
111
|
+
"/add_customer.rb:581"=>{:secs=>0.446045, :percent=>10, :count=>1},
|
112
|
+
"/add_customer.rb:583"=>{:secs=>3.789378, :percent=>85, :count=>1},
|
113
|
+
"/add_customer.rb:585"=>{:secs=>0.0, :percent=>0, :count=>1},
|
114
|
+
"/add_customer.rb:587"=>{:secs=>0.0, :percent=>0, :count=>1},
|
115
|
+
"/add_customer.rb:595"=>{:secs=>0.0, :percent=>0, :count=>1},
|
116
|
+
"/add_customer.rb:603"=>{:secs=>0.0, :percent=>0, :count=>1},
|
117
|
+
"/add_customer.rb:612"=>{:secs=>0.0, :percent=>0, :count=>1},
|
118
|
+
"/add_customer.rb:617"=>{:secs=>0.0, :percent=>0, :count=>1}
|
119
|
+
},
|
120
|
+
:labels=>{
|
121
|
+
:database_access=>{:secs=>4,447444, :percent=>99, :count=>3},
|
122
|
+
:checkouts=>{:secs=>0.0, :percent=>0, :count=>2},
|
123
|
+
},
|
124
|
+
:ranges=>{
|
125
|
+
"/add_customer.rb:509 - /add_customer.rb:529"=>{:secs=>0.008001, :percent=>0, :count=>1},
|
126
|
+
"/add_customer.rb:529 - /add_customer.rb:532"=>{:secs=>0.212021, :percent=>5, :count=>1},
|
127
|
+
"/add_customer.rb:532 - /add_customer.rb:569"=>{:secs=>0.006001, :percent=>0, :count=>1},
|
128
|
+
"/add_customer.rb:569 - /add_customer.rb:581"=>{:secs=>0.446045, :percent=>10, :count=>1},
|
129
|
+
"/add_customer.rb:581 - /add_customer.rb:583"=>{:secs=>3.789378, :percent=>85, :count=>1},
|
130
|
+
"/add_customer.rb:583 - /add_customer.rb:585"=>{:secs=>0.0, :percent=>0, :count=>1},
|
131
|
+
"/add_customer.rb:585 - /add_customer.rb:587"=>{:secs=>0.0, :percent=>0, :count=>1},
|
132
|
+
"/add_customer.rb:587 - /add_customer.rb:595"=>{:secs=>0.0, :percent=>0, :count=>1},
|
133
|
+
"/add_customer.rb:595 - /add_customer.rb:603"=>{:secs=>0.0, :percent=>0, :count=>1},
|
134
|
+
"/add_customer.rb:603 - /add_customer.rb:612"=>{:secs=>0.0, :percent=>0, :count=>1},
|
135
|
+
"/add_customer.rb:612 - /add_customer.rb:617"=>{:secs=>0.0, :percent=>0, :count=>1}
|
136
|
+
},
|
137
|
+
:message=>"
|
138
|
+
|
139
|
+
Total time <add_customer_wrong>:4.46
|
140
|
+
Total time by location:
|
141
|
+
/add_customer.rb:509: 0.0 (0%) #1
|
142
|
+
/add_customer.rb:529: 0.01 (0%) #1
|
143
|
+
/add_customer.rb:532: 0.21 (5%) #1
|
144
|
+
/add_customer.rb:569: 0.01 (0%) #1
|
145
|
+
/add_customer.rb:581: 0.45 (10%) #1
|
146
|
+
/add_customer.rb:583: 3.79 (85%) #1
|
147
|
+
/add_customer.rb:585: 0.0 (0%) #1
|
148
|
+
/add_customer.rb:587: 0.0 (0%) #1
|
149
|
+
/add_customer.rb:595: 0.0 (0%) #1
|
150
|
+
/add_customer.rb:603: 0.0 (0%) #1
|
151
|
+
/add_customer.rb:612: 0.0 (0%) #1
|
152
|
+
/add_customer.rb:617: 0.0 (0%) #1
|
153
|
+
Total time by label:
|
154
|
+
database_access: 4.45 (99%) #3
|
155
|
+
checkouts: 0.0 (0%) #2
|
156
|
+
Total time by range:
|
157
|
+
/add_customer.rb:509 - /add_customer.rb:529: 0.01 (0%) #1
|
158
|
+
/add_customer.rb:529 - /add_customer.rb:532: 0.21 (5%) #1
|
159
|
+
/add_customer.rb:532 - /add_customer.rb:569: 0.01 (0%) #1
|
160
|
+
/add_customer.rb:569 - /add_customer.rb:581: 0.45 (10%) #1
|
161
|
+
/add_customer.rb:581 - /add_customer.rb:583: 3.79 (85%) #1
|
162
|
+
/add_customer.rb:583 - /add_customer.rb:585: 0.0 (0%) #1
|
163
|
+
/add_customer.rb:585 - /add_customer.rb:587: 0.0 (0%) #1
|
164
|
+
/add_customer.rb:587 - /add_customer.rb:595: 0.0 (0%) #1
|
165
|
+
/add_customer.rb:595 - /add_customer.rb:603: 0.0 (0%) #1
|
166
|
+
/add_customer.rb:603 - /add_customer.rb:612: 0.0 (0%) #1
|
167
|
+
/add_customer.rb:612 - /add_customer.rb:617: 0.0 (0%) #1
|
168
|
+
"
|
169
|
+
}
|
170
|
+
```
|
171
|
+
|
172
|
+
|
173
|
+
## Contributing
|
174
|
+
|
175
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/marioruiz/timify.
|
176
|
+
|
177
|
+
|
178
|
+
## License
|
179
|
+
|
180
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
181
|
+
|
data/lib/timify.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
###############################################################
|
2
|
-
# Calculates the time running from one location to another inside your code
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
2
|
+
# Calculates the time running from one location to another inside your code. More info: https://github.com/MarioRuiz/timify/
|
3
|
+
#
|
4
|
+
# attr_accessor:
|
5
|
+
# min_time_to_show: minimum time to show the elapsed time when calling 'add' method
|
6
|
+
# show: print out results on screen
|
7
|
+
#
|
8
|
+
# attr_reader:
|
9
|
+
# name: name given for the Timify instance
|
10
|
+
# initial_time: when the instance was created
|
11
|
+
# total: total time elapsed
|
12
|
+
# max_time_spent: maximum time measured for this instance
|
11
13
|
###############################################################
|
12
14
|
class Timify
|
13
15
|
attr_accessor :min_time_to_show, :show
|
@@ -18,6 +20,7 @@ class Timify
|
|
18
20
|
# name: name for the instance
|
19
21
|
# min_time_to_show: minimum time to show the elapsed time when calling 'add' method
|
20
22
|
# show: print out results on screen
|
23
|
+
#
|
21
24
|
# examples:
|
22
25
|
# t = Timify.new :create_user
|
23
26
|
# t.show = false
|
@@ -40,21 +43,25 @@ class Timify
|
|
40
43
|
end
|
41
44
|
|
42
45
|
###############################################################
|
43
|
-
# Adds a new point to count the time elapsed.
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
46
|
+
# Adds a new point to count the time elapsed.
|
47
|
+
# It will count from the last 'add' call or Timify creation in case of the first 'add'.
|
48
|
+
#
|
49
|
+
# input:
|
50
|
+
# label: (optional) In case supplied it will summarize all the ones with the same label
|
51
|
+
#
|
52
|
+
# output: (float)
|
53
|
+
# time elapsed in seconds
|
54
|
+
#
|
55
|
+
# examples:
|
56
|
+
# t=Timify.new :example
|
57
|
+
# t.add; run_sqls; t.add :database
|
58
|
+
# t.add
|
59
|
+
# #some processes
|
60
|
+
# t.add
|
61
|
+
# #some processes
|
62
|
+
# send_email_alert if t.add > 0.2
|
63
|
+
# #some processes
|
64
|
+
# do_log(t.totals[:message]) if t.add > 0.5
|
58
65
|
###############################################################
|
59
66
|
def add(*label)
|
60
67
|
if !label.empty?
|
@@ -102,21 +109,23 @@ class Timify
|
|
102
109
|
|
103
110
|
###############################################################
|
104
111
|
# returns all data for this instance
|
105
|
-
#
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
#
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
#
|
117
|
-
#
|
118
|
-
#
|
119
|
-
#
|
112
|
+
#
|
113
|
+
# input:
|
114
|
+
# json: (boolean) in case of true the output will be in json format instead of a hash
|
115
|
+
#
|
116
|
+
# output: (Hash or json string)
|
117
|
+
# name: (String) name given for this instance'
|
118
|
+
# total_time: (float) total elapsed time from initialization to last 'add' call
|
119
|
+
# started: (Time)
|
120
|
+
# finished: (Time)
|
121
|
+
# message: (String) a printable friendly message giving all information
|
122
|
+
# locations, labels, ranges: (Hash) the resultant hash contains:
|
123
|
+
# secs: (float) number of seconds
|
124
|
+
# percent: (integer) percentage in reference to the total time
|
125
|
+
# count: (integer) number of times
|
126
|
+
# locations: (Hash) All summary data by location where was called
|
127
|
+
# labels: (Hash) All summary data by label given on 'add' method
|
128
|
+
# ranges: (Hash) All summary data by ranges where was called, from last 'add' call to current 'add' call
|
120
129
|
###############################################################
|
121
130
|
def totals(json: false)
|
122
131
|
require 'json' if json
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mario Ruiz
|
@@ -15,8 +15,12 @@ description: Calculates the time running from one location to another inside you
|
|
15
15
|
email: marioruizs@gmail.com
|
16
16
|
executables: []
|
17
17
|
extensions: []
|
18
|
-
extra_rdoc_files:
|
18
|
+
extra_rdoc_files:
|
19
|
+
- LICENSE
|
20
|
+
- README.md
|
19
21
|
files:
|
22
|
+
- LICENSE
|
23
|
+
- README.md
|
20
24
|
- lib/timify.rb
|
21
25
|
homepage: https://github.com/MarioRuiz/timify
|
22
26
|
licenses:
|