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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e5a8d520eb475e3eb5b3e75b3b175a4a66c3804584912afc9d4392c1d82f3d7
4
- data.tar.gz: 558bc615e123ceaf146c2107b71202fef3eaf307215c93aa8f421826e25a8d4a
3
+ metadata.gz: 5255c8fe897e90a63054c6415e08ff418ed66adbf445c77620ffb752eae30d82
4
+ data.tar.gz: 2d3eed087aa8d2f65b54ba8f57e5e0c9e99ca234d4fcb9e2f8909d6aff67f845
5
5
  SHA512:
6
- metadata.gz: d60240815eee8a5001004f854ccfd1fe94f01023ca5099799100bcc04a99ae982bc96f14b746b4965c4afc2aba77d2138ebae96c41da075bb7b8c4f15b863493
7
- data.tar.gz: 4beb2d7f2cd09940e9159e5d4e1d1e62db2268f82b75ff86c344e7b11076a2e6d57865039fe19c361208c1fee8e5af8c3f72657880f6183107e8f90f33129e47
6
+ metadata.gz: 01bb4c858593124f009ed4495f9168a7b6d58272f01be0058a308858550a3aeea37f297bbd505a8974288fb00653fe4e55de6d20569af0f65c5f172dc7f2ff76
7
+ data.tar.gz: c6c1e75718e04f708f7785132bd1003d3bfa269560349a8281e40a08b36787633448fbf459b3bd29b125b84010dca8be8c6b100c276681c7cefa94fb2c9b0d64
@@ -11,15 +11,8 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby: [ "2.7", "3.0", "3.1", "3.2", jruby ]
15
- active_support: [ "6.0", "7.0" ]
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.0.2"
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"
@@ -71,7 +71,15 @@ module Clockwork
71
71
  end
72
72
 
73
73
  def elapsed_ready?(t)
74
- @last.nil? || (t - @last.to_i).to_i >= @period
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 = MiniTest::Mock.new
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)
@@ -1,5 +1,6 @@
1
1
  require 'clockwork'
2
2
  require 'active_support/time'
3
+ require 'stringio'
3
4
 
4
5
  module Clockwork
5
6
  LOGFILE = File.expand_path('../../tmp/signal_test.log', __FILE__)
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: 3.0.2
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: 2023-02-12 00:00:00.000000000 Z
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.0.3.1
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: