elapsed 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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +12 -10
- data/README.md +9 -0
- data/elapsed.gemspec +3 -3
- data/lib/elapsed.rb +5 -1
- data/test/test_elapsed.rb +54 -0
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 656ec628cbba4ac5b3af2e93ab092aa4d863c01d8ba260e1beeff647680f8e32
|
4
|
+
data.tar.gz: 90691a2d1cdafef93e8f7d829e3830ca58e6f275f49c1ee48ee2e0863dcaba1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a252c7949ec588e9ea1bb747f398f8c204f038974be9ecd407f764e1bd73f2b6176aaf5b177c768521c9f18de178b62ca9781a3cae77728095c8ed7c0a01464a
|
7
|
+
data.tar.gz: 6ffed0945dc6efef7aa0ba5e9b797c926180f9a6097af482bca07d2e69f90c27be39d1d319a85890f88f28adeaad60d5d3765ef05606e0eeb92bbe1d39a0fe9a
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -14,5 +14,5 @@ gem 'rubocop-minitest', '~>0.38', require: false
|
|
14
14
|
gem 'rubocop-performance', '~>1.25', require: false
|
15
15
|
gem 'rubocop-rake', '~>0.7', require: false
|
16
16
|
gem 'simplecov', '~>0.22', require: false
|
17
|
-
gem 'simplecov-cobertura', '~>
|
17
|
+
gem 'simplecov-cobertura', '~>3.0', require: false
|
18
18
|
gem 'yard', '~>0.9', require: false
|
data/Gemfile.lock
CHANGED
@@ -2,8 +2,8 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
elapsed (0.0.0)
|
5
|
-
loog (
|
6
|
-
tago (
|
5
|
+
loog (~> 0.6)
|
6
|
+
tago (~> 0.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
@@ -12,7 +12,7 @@ GEM
|
|
12
12
|
ast (2.4.3)
|
13
13
|
builder (3.3.0)
|
14
14
|
docile (1.4.1)
|
15
|
-
json (2.
|
15
|
+
json (2.13.2)
|
16
16
|
language_server-protocol (3.17.0.5)
|
17
17
|
lint_roller (1.1.0)
|
18
18
|
logger (1.7.0)
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
minitest (>= 5.0)
|
26
26
|
ruby-progressbar
|
27
27
|
parallel (1.27.0)
|
28
|
-
parser (3.3.
|
28
|
+
parser (3.3.9.0)
|
29
29
|
ast (~> 2.4.1)
|
30
30
|
racc
|
31
31
|
prism (1.4.0)
|
@@ -34,7 +34,7 @@ GEM
|
|
34
34
|
rake (13.3.0)
|
35
35
|
regexp_parser (2.10.0)
|
36
36
|
rexml (3.4.1)
|
37
|
-
rubocop (1.
|
37
|
+
rubocop (1.79.0)
|
38
38
|
json (~> 2.3)
|
39
39
|
language_server-protocol (~> 3.17.0.2)
|
40
40
|
lint_roller (~> 1.1.0)
|
@@ -42,10 +42,11 @@ GEM
|
|
42
42
|
parser (>= 3.3.0.2)
|
43
43
|
rainbow (>= 2.2.2, < 4.0)
|
44
44
|
regexp_parser (>= 2.9.3, < 3.0)
|
45
|
-
rubocop-ast (>= 1.
|
45
|
+
rubocop-ast (>= 1.46.0, < 2.0)
|
46
46
|
ruby-progressbar (~> 1.7)
|
47
|
+
tsort (>= 0.2.0)
|
47
48
|
unicode-display_width (>= 2.4.0, < 4.0)
|
48
|
-
rubocop-ast (1.
|
49
|
+
rubocop-ast (1.46.0)
|
49
50
|
parser (>= 3.3.7.2)
|
50
51
|
prism (~> 1.4)
|
51
52
|
rubocop-minitest (0.38.1)
|
@@ -64,12 +65,13 @@ GEM
|
|
64
65
|
docile (~> 1.1)
|
65
66
|
simplecov-html (~> 0.11)
|
66
67
|
simplecov_json_formatter (~> 0.1)
|
67
|
-
simplecov-cobertura (
|
68
|
+
simplecov-cobertura (3.0.0)
|
68
69
|
rexml
|
69
70
|
simplecov (~> 0.19)
|
70
|
-
simplecov-html (0.13.
|
71
|
+
simplecov-html (0.13.2)
|
71
72
|
simplecov_json_formatter (0.1.4)
|
72
73
|
tago (0.1.0)
|
74
|
+
tsort (0.2.0)
|
73
75
|
unicode-display_width (3.1.4)
|
74
76
|
unicode-emoji (~> 4.0, >= 4.0.4)
|
75
77
|
unicode-emoji (4.0.4)
|
@@ -95,7 +97,7 @@ DEPENDENCIES
|
|
95
97
|
rubocop-performance (~> 1.25)
|
96
98
|
rubocop-rake (~> 0.7)
|
97
99
|
simplecov (~> 0.22)
|
98
|
-
simplecov-cobertura (~>
|
100
|
+
simplecov-cobertura (~> 3.0)
|
99
101
|
yard (~> 0.9)
|
100
102
|
|
101
103
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -48,6 +48,15 @@ elapsed do
|
|
48
48
|
end
|
49
49
|
```
|
50
50
|
|
51
|
+
You can also filter out small durations using the `over:` parameter:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
elapsed(Loog::VERBOSE, over: 0.5) do
|
55
|
+
# This message will only be logged if the block takes more than 0.5 seconds
|
56
|
+
run_something_that_might_be_fast
|
57
|
+
end
|
58
|
+
```
|
59
|
+
|
51
60
|
That's it.
|
52
61
|
|
53
62
|
## How to contribute
|
data/elapsed.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
10
10
|
s.required_ruby_version = '>=3.2'
|
11
11
|
s.name = 'elapsed'
|
12
|
-
s.version = '0.
|
12
|
+
s.version = '0.2.0'
|
13
13
|
s.license = 'MIT'
|
14
14
|
s.summary = 'A simple Ruby function to measure the time elapsed by the execution of a block'
|
15
15
|
s.description =
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
23
|
s.rdoc_options = ['--charset=UTF-8']
|
24
24
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
25
|
-
s.add_dependency 'loog', '
|
26
|
-
s.add_dependency 'tago', '
|
25
|
+
s.add_dependency 'loog', '~>0.6'
|
26
|
+
s.add_dependency 'tago', '~>0.1'
|
27
27
|
s.metadata['rubygems_mfa_required'] = 'true'
|
28
28
|
end
|
data/lib/elapsed.rb
CHANGED
@@ -23,9 +23,13 @@ require 'tago'
|
|
23
23
|
# @param [String] good The message to print on success finish
|
24
24
|
# @param [String] bad The message to print on failure finish
|
25
25
|
# @param [Integer] level The level of logging to use
|
26
|
-
|
26
|
+
# @param [Float] over The minimum duration in seconds to report
|
27
|
+
def elapsed(log = nil, good: 'Finished', level: Logger::DEBUG, bad: 'Failed', over: 0)
|
27
28
|
start = Time.now
|
28
29
|
print_it = lambda do |m|
|
30
|
+
duration = Time.now - start
|
31
|
+
return if duration < over
|
32
|
+
|
29
33
|
m += " in #{start.ago}"
|
30
34
|
if log.nil?
|
31
35
|
puts m
|
data/test/test_elapsed.rb
CHANGED
@@ -44,4 +44,58 @@ class TestElapsed < Minitest::Test
|
|
44
44
|
4 + 5
|
45
45
|
end
|
46
46
|
end
|
47
|
+
|
48
|
+
def test_with_over_threshold_reports
|
49
|
+
loog = Loog::Buffer.new
|
50
|
+
elapsed(loog, over: 0.001) do
|
51
|
+
sleep(0.01)
|
52
|
+
end
|
53
|
+
assert_includes(loog.to_s, 'Finished')
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_with_over_threshold_does_not_report
|
57
|
+
loog = Loog::Buffer.new
|
58
|
+
elapsed(loog, over: 1.0) do
|
59
|
+
4 + 5
|
60
|
+
end
|
61
|
+
assert_equal('', loog.to_s)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_with_over_threshold_on_error_reports
|
65
|
+
loog = Loog::Buffer.new
|
66
|
+
assert_raises(StandardError) do
|
67
|
+
elapsed(loog, over: 0.001, bad: 'Error occurred') do
|
68
|
+
sleep(0.01)
|
69
|
+
raise 'error'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
assert_includes(loog.to_s, 'Error occurred')
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_with_over_threshold_on_error_does_not_report
|
76
|
+
loog = Loog::Buffer.new
|
77
|
+
assert_raises(StandardError) do
|
78
|
+
elapsed(loog, over: 1.0, bad: 'Error occurred') do
|
79
|
+
raise 'error'
|
80
|
+
end
|
81
|
+
end
|
82
|
+
assert_equal('', loog.to_s)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_with_over_threshold_on_throw_reports
|
86
|
+
loog = Loog::Buffer.new
|
87
|
+
elapsed(loog, over: 0.001) do
|
88
|
+
sleep(0.01)
|
89
|
+
throw :done
|
90
|
+
end
|
91
|
+
assert_includes(loog.to_s, 'done')
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_with_over_threshold_on_throw_does_not_report
|
95
|
+
loog = Loog::Buffer.new
|
96
|
+
elapsed(loog, over: 1.0) do
|
97
|
+
throw :done
|
98
|
+
end
|
99
|
+
assert_equal('', loog.to_s)
|
100
|
+
end
|
47
101
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elapsed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
@@ -13,30 +13,30 @@ dependencies:
|
|
13
13
|
name: loog
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
|
-
- - "
|
16
|
+
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: '0'
|
18
|
+
version: '0.6'
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
|
-
- - "
|
23
|
+
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: '0'
|
25
|
+
version: '0.6'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: tago
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- - "
|
30
|
+
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '0'
|
32
|
+
version: '0.1'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '0'
|
39
|
+
version: '0.1'
|
40
40
|
description: You simply pass a code block to the elapsed() function and it will print
|
41
41
|
the summary of execution to the log with the time it took
|
42
42
|
email: yegor256@gmail.com
|