clockwork 3.0.2 → 4.0.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/.github/workflows/tests.yml +2 -9
- data/clockwork.gemspec +4 -1
- data/lib/clockwork/event.rb +9 -1
- data/test/event_test.rb +31 -0
- data/test/manager_test.rb +2 -1
- data/test/samples/signal_test.rb +1 -0
- metadata +45 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5255c8fe897e90a63054c6415e08ff418ed66adbf445c77620ffb752eae30d82
|
|
4
|
+
data.tar.gz: 2d3eed087aa8d2f65b54ba8f57e5e0c9e99ca234d4fcb9e2f8909d6aff67f845
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 01bb4c858593124f009ed4495f9168a7b6d58272f01be0058a308858550a3aeea37f297bbd505a8974288fb00653fe4e55de6d20569af0f65c5f172dc7f2ff76
|
|
7
|
+
data.tar.gz: c6c1e75718e04f708f7785132bd1003d3bfa269560349a8281e40a08b36787633448fbf459b3bd29b125b84010dca8be8c6b100c276681c7cefa94fb2c9b0d64
|
data/.github/workflows/tests.yml
CHANGED
|
@@ -11,15 +11,8 @@ jobs:
|
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
strategy:
|
|
13
13
|
matrix:
|
|
14
|
-
ruby: [ "2
|
|
15
|
-
active_support: [ "
|
|
16
|
-
exclude:
|
|
17
|
-
- ruby: "3.0"
|
|
18
|
-
active_support: "6.0"
|
|
19
|
-
- ruby: "3.1"
|
|
20
|
-
active_support: "6.0"
|
|
21
|
-
- ruby: "3.2"
|
|
22
|
-
active_support: "6.0"
|
|
14
|
+
ruby: [ "3.2", "3.3", "3.4", "4.0" ]
|
|
15
|
+
active_support: [ "8.0", "8.1" ]
|
|
23
16
|
name: Ruby ${{ matrix.ruby }} - ActiveSupport ${{ matrix.active_support }}
|
|
24
17
|
env:
|
|
25
18
|
ACTIVE_SUPPORT_VERSION: ${{ matrix.active_support }}
|
data/clockwork.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = "clockwork"
|
|
3
|
-
s.version = "
|
|
3
|
+
s.version = "4.0.0"
|
|
4
4
|
|
|
5
5
|
s.authors = ["Adam Wiggins", "tomykaira"]
|
|
6
6
|
s.license = 'MIT'
|
|
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
|
|
|
19
19
|
|
|
20
20
|
s.add_dependency(%q<tzinfo>)
|
|
21
21
|
s.add_dependency(%q<activesupport>)
|
|
22
|
+
s.add_dependency(%q<base64>)
|
|
23
|
+
s.add_dependency(%q<bigdecimal>)
|
|
24
|
+
s.add_dependency(%q<ostruct>)
|
|
22
25
|
|
|
23
26
|
s.add_development_dependency "rake"
|
|
24
27
|
s.add_development_dependency "daemons"
|
data/lib/clockwork/event.rb
CHANGED
|
@@ -71,7 +71,15 @@ module Clockwork
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def elapsed_ready?(t)
|
|
74
|
-
|
|
74
|
+
# We only need to calculate this if the period is >= 1 day. The UTC offset check only makes sense
|
|
75
|
+
# for periods >= 1.day since these are the shortest period where increasing the date by a day, may not
|
|
76
|
+
# exactly match the exact elapsed time.
|
|
77
|
+
change_in_utc_offset = if @period >= 1.day
|
|
78
|
+
t.utc_offset - (t - @period).utc_offset
|
|
79
|
+
else
|
|
80
|
+
0
|
|
81
|
+
end
|
|
82
|
+
@last.nil? || (t - @last.to_i).to_i >= (@period - change_in_utc_offset)
|
|
75
83
|
end
|
|
76
84
|
|
|
77
85
|
def run_at?(t)
|
data/test/event_test.rb
CHANGED
|
@@ -70,5 +70,36 @@ describe Clockwork::Event do
|
|
|
70
70
|
assert_equal true, event.run_now?(Time.now)
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
|
+
|
|
74
|
+
describe 'with Pacific Time TZ' do
|
|
75
|
+
before do
|
|
76
|
+
@manager = Class.new
|
|
77
|
+
@manager.stubs(:config).returns({ :tz => 'America/Los_Angeles' })
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
describe 'event non DST to DST transition' do
|
|
81
|
+
it 'returns true when it crosses the transition' do
|
|
82
|
+
event = Clockwork::Event.new(@manager, 1.day, nil, nil)
|
|
83
|
+
starting_time = Time.utc(2022, 3, 13, 6)
|
|
84
|
+
assert_equal true, event.run_now?(starting_time)
|
|
85
|
+
event.instance_variable_set('@last', starting_time)
|
|
86
|
+
# This will return true, since the UTC offset is moved forward by 1 hour. With the 1 hour, it will be
|
|
87
|
+
# equal to 1 day since the last time it was run.
|
|
88
|
+
assert_equal true, event.run_now?(starting_time + 23.hours)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe 'event DST to non DST transition' do
|
|
93
|
+
it 'returns true when it crosses the transition' do
|
|
94
|
+
event = Clockwork::Event.new(@manager, 1.day, nil, nil)
|
|
95
|
+
starting_time = Time.utc(2021, 11, 7, 5)
|
|
96
|
+
assert_equal true, event.run_now?(starting_time)
|
|
97
|
+
event.instance_variable_set('@last', starting_time)
|
|
98
|
+
# This returns false since it hasn't reached a full 'real' day yet.
|
|
99
|
+
assert_equal false, event.run_now?(starting_time + 24.hours)
|
|
100
|
+
assert_equal true, event.run_now?(starting_time + 25.hours)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
73
104
|
end
|
|
74
105
|
end
|
data/test/manager_test.rb
CHANGED
|
@@ -3,6 +3,7 @@ require "minitest/autorun"
|
|
|
3
3
|
require 'mocha/minitest'
|
|
4
4
|
require 'time'
|
|
5
5
|
require 'active_support/time'
|
|
6
|
+
require 'stringio'
|
|
6
7
|
|
|
7
8
|
describe Clockwork::Manager do
|
|
8
9
|
before do
|
|
@@ -117,7 +118,7 @@ describe Clockwork::Manager do
|
|
|
117
118
|
@manager.handler { raise 'boom' }
|
|
118
119
|
@manager.every(1.minute, 'myjob')
|
|
119
120
|
|
|
120
|
-
mocked_logger =
|
|
121
|
+
mocked_logger = Minitest::Mock.new
|
|
121
122
|
mocked_logger.expect :error, true, [RuntimeError]
|
|
122
123
|
@manager.configure { |c| c[:logger] = mocked_logger }
|
|
123
124
|
@manager.tick(Time.now)
|
data/test/samples/signal_test.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: clockwork
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adam Wiggins
|
|
8
8
|
- tomykaira
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: tzinfo
|
|
@@ -39,6 +38,48 @@ dependencies:
|
|
|
39
38
|
- - ">="
|
|
40
39
|
- !ruby/object:Gem::Version
|
|
41
40
|
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: base64
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: bigdecimal
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: ostruct
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
42
83
|
- !ruby/object:Gem::Dependency
|
|
43
84
|
name: rake
|
|
44
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -157,7 +198,6 @@ homepage: http://github.com/Rykian/clockwork
|
|
|
157
198
|
licenses:
|
|
158
199
|
- MIT
|
|
159
200
|
metadata: {}
|
|
160
|
-
post_install_message:
|
|
161
201
|
rdoc_options: []
|
|
162
202
|
require_paths:
|
|
163
203
|
- lib
|
|
@@ -172,8 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
172
212
|
- !ruby/object:Gem::Version
|
|
173
213
|
version: '0'
|
|
174
214
|
requirements: []
|
|
175
|
-
rubygems_version: 3.
|
|
176
|
-
signing_key:
|
|
215
|
+
rubygems_version: 3.6.9
|
|
177
216
|
specification_version: 4
|
|
178
217
|
summary: A scheduler process to replace cron.
|
|
179
218
|
test_files:
|