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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c09ed435ac26fa14241180aa1dd3321fae8cdaa61f97582a550ba34a9a68440c
4
- data.tar.gz: 113cf2f6f1306f15500d08d401b2c33a79d80b21d2cbbafc2ff35b18103a7c1c
3
+ metadata.gz: 656ec628cbba4ac5b3af2e93ab092aa4d863c01d8ba260e1beeff647680f8e32
4
+ data.tar.gz: 90691a2d1cdafef93e8f7d829e3830ca58e6f275f49c1ee48ee2e0863dcaba1e
5
5
  SHA512:
6
- metadata.gz: 0cb513a4b8c60d5b1940c5ddf46ac0714006f663746bc55b2156d65f672b526f721f0b03565b1d26f2529c247f669aace79aad343d95cb97dcde7a03eaec7e3d
7
- data.tar.gz: 40695f5cdf209e33160d76df374a0ecd6f6c6a728c95612c717a57568d0a237c95a60d05d94dc23b4e611415655802e5dcfbd9396b4a9d2ef6492c3178cf6c9c
6
+ metadata.gz: a252c7949ec588e9ea1bb747f398f8c204f038974be9ecd407f764e1bd73f2b6176aaf5b177c768521c9f18de178b62ca9781a3cae77728095c8ed7c0a01464a
7
+ data.tar.gz: 6ffed0945dc6efef7aa0ba5e9b797c926180f9a6097af482bca07d2e69f90c27be39d1d319a85890f88f28adeaad60d5d3765ef05606e0eeb92bbe1d39a0fe9a
data/.gitignore CHANGED
@@ -1,8 +1,9 @@
1
+ *.gem
1
2
  .bundle/
3
+ .claude/
2
4
  .DS_Store
3
5
  .idea/
4
6
  .yardoc/
5
- *.gem
6
7
  coverage/
7
8
  doc/
8
9
  node_modules/
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', '~>2.1', require: false
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 (> 0)
6
- tago (> 0)
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.12.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.8.0)
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.77.0)
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.1, < 2.0)
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.45.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 (2.1.0)
68
+ simplecov-cobertura (3.0.0)
68
69
  rexml
69
70
  simplecov (~> 0.19)
70
- simplecov-html (0.13.1)
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 (~> 2.1)
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.1.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', '>0'
26
- s.add_dependency 'tago', '>0'
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
- def elapsed(log = nil, good: 'Finished', level: Logger::DEBUG, bad: 'Failed')
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.1.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