ruby-clock 2.0.0.beta2 → 2.0.0.beta3
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/CHANGELOG.md +4 -0
- data/README.md +38 -2
- data/example-app/Clockfile +26 -1
- data/example-app/Gemfile.lock +9 -8
- data/example-rails-app/Clockfile +1 -19
- data/exe/clock +7 -6
- data/lib/ruby-clock/version.rb +1 -1
- data/lib/ruby-clock.rb +26 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17d680fbe8df5efadea1cfa9123682fd2557828515fabfafad6825476669b368
|
4
|
+
data.tar.gz: d68673fdc64e3985a170d129b6642b00f323256904e4e54c07660bf1d73cd4e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 789d4ba0e97036cf12473ba5d0c6b190ce164e81573738c3f284910fb6de39fb13ae9a1e3342d6c621ede962b105923a05cc7c226c0294aea26dbb3d160c64f8
|
7
|
+
data.tar.gz: 381e0a04c4d0dc0425176d8414939658b669caaa0b1f2c2253c511506800ce01788eac2f4ef8cac9ebbdaac31031171917a8fac1965b4f3098f8f8c7a5b2cc8d
|
data/CHANGELOG.md
CHANGED
@@ -7,9 +7,13 @@
|
|
7
7
|
* Code reorganization so there are no unnecessary methods in top-level Kernel namespace
|
8
8
|
* DSL methods are now at the top-level namespace (`schedule.every` → `every`, `schedule.cron` → `cron`)
|
9
9
|
* error handler definition is now at the top-level namespace (`def schedule.on_error` → `on_error do`)
|
10
|
+
* around callbacks now have a top-level namespace method, which is different from the above in that...
|
11
|
+
* multiple around callbacks can be consecutively assigned
|
10
12
|
|
11
13
|
### Migrating from ruby-clock version 1 to version 2
|
12
14
|
|
15
|
+
* if you have and existing `def schedule.around_trigger`, you will need to change it to use the new
|
16
|
+
`around_action` method. see readme.
|
13
17
|
* There is no longer a need to have a binstub in rails. You can delete bin/clock from your app.
|
14
18
|
* The invocations (in Procfile, or wherever else you start ruby-clock) should change from
|
15
19
|
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
THESE ARE THE DOCS FOR VERSION 2.0.0.
|
1
|
+
THESE ARE THE DOCS FOR VERSION 2.0.0.beta
|
2
2
|
|
3
3
|
See version 1 docs here: https://github.com/jjb/ruby-clock/tree/v1.0.0
|
4
4
|
|
@@ -152,7 +152,43 @@ end
|
|
152
152
|
|
153
153
|
### Callbacks
|
154
154
|
|
155
|
-
You can define
|
155
|
+
You can define around callbacks which will run for all jobs, like shown below.
|
156
|
+
This somewhat awkward syntax is necessary in order to enable the ability to define multiple callbacks.
|
157
|
+
(perhaps in different files, shared by multiple Clockfiles, etc.).
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
around_action do |job_proc, job_info|
|
161
|
+
puts "before1 #{job_info.class}"
|
162
|
+
job_proc.call
|
163
|
+
puts "after1"
|
164
|
+
end
|
165
|
+
|
166
|
+
around_action do |job_proc|
|
167
|
+
puts "before2"
|
168
|
+
job_proc.call
|
169
|
+
puts "after2"
|
170
|
+
end
|
171
|
+
|
172
|
+
every('2 seconds') do
|
173
|
+
puts "hello from a ruby-clock job"
|
174
|
+
end
|
175
|
+
```
|
176
|
+
|
177
|
+
|
178
|
+
```
|
179
|
+
before1 Rufus::Scheduler::EveryJob
|
180
|
+
before2
|
181
|
+
hello from a ruby-clock job
|
182
|
+
after2
|
183
|
+
after1
|
184
|
+
```
|
185
|
+
|
186
|
+
The around callbacks code will be run in the individual job thread.
|
187
|
+
|
188
|
+
rufus-scheduler also provides before and after hooks. ruby-clock does not provide convenience methods for these
|
189
|
+
but you can easily use them via the `schedule` object. These will run in the outer scheduling thread and not in
|
190
|
+
the job thread, so they may have slightly different behavior in some cases. There is likely no reason to use them
|
191
|
+
instead of `around_action`.
|
156
192
|
Read [the rufus-scheduler documentation](https://github.com/jmettraux/rufus-scheduler/#callbacks)
|
157
193
|
to learn how to do this. Where the documentation references `s`, you should use `schedule`.
|
158
194
|
|
data/example-app/Clockfile
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
on_error do |job, error|
|
2
|
-
|
2
|
+
puts "An error has occurred with job #{job.identifier}: #{error.class}: #{error.message}"
|
3
|
+
end
|
4
|
+
# on_error do |job, error|
|
5
|
+
# raise error
|
6
|
+
# end
|
7
|
+
|
8
|
+
around_action do |job_proc, job_info|
|
9
|
+
puts "before1 #{job_info.class}"
|
10
|
+
job_proc.call
|
11
|
+
puts "after1"
|
12
|
+
end
|
13
|
+
|
14
|
+
around_action do |job_proc|
|
15
|
+
puts "before2"
|
16
|
+
job_proc.call
|
17
|
+
puts "after2"
|
18
|
+
end
|
19
|
+
|
20
|
+
around_action do |job_proc, job_info|
|
21
|
+
puts "before3 #{job_info.class}"
|
22
|
+
job_proc.call
|
23
|
+
puts "after3"
|
3
24
|
end
|
4
25
|
|
5
26
|
every('2 seconds') do
|
@@ -10,6 +31,10 @@ every('2 seconds') do
|
|
10
31
|
shell 'say hello'
|
11
32
|
end
|
12
33
|
|
34
|
+
every('2 seconds') do
|
35
|
+
raise "An error."
|
36
|
+
end
|
37
|
+
|
13
38
|
cron('*/10 * * * * *') do
|
14
39
|
puts "cron running on every 10th second #{Time.now}"
|
15
40
|
end
|
data/example-app/Gemfile.lock
CHANGED
@@ -1,31 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ..
|
3
3
|
specs:
|
4
|
-
ruby-clock (0.
|
4
|
+
ruby-clock (2.0.0.beta2)
|
5
5
|
method_source
|
6
6
|
rufus-scheduler (~> 3.8)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
-
concurrent-ruby (1.1.
|
12
|
-
et-orbi (1.2.
|
11
|
+
concurrent-ruby (1.1.10)
|
12
|
+
et-orbi (1.2.7)
|
13
13
|
tzinfo
|
14
|
-
fugit (1.
|
15
|
-
et-orbi (~> 1
|
14
|
+
fugit (1.7.1)
|
15
|
+
et-orbi (~> 1, >= 1.2.7)
|
16
16
|
raabro (~> 1.4)
|
17
17
|
method_source (1.0.0)
|
18
18
|
raabro (1.4.0)
|
19
|
-
rufus-scheduler (3.8.
|
19
|
+
rufus-scheduler (3.8.2)
|
20
20
|
fugit (~> 1.1, >= 1.1.6)
|
21
|
-
tzinfo (2.0.
|
21
|
+
tzinfo (2.0.5)
|
22
22
|
concurrent-ruby (~> 1.0)
|
23
23
|
|
24
24
|
PLATFORMS
|
25
25
|
arm64-darwin-20
|
26
|
+
arm64-darwin-21
|
26
27
|
|
27
28
|
DEPENDENCIES
|
28
29
|
ruby-clock!
|
29
30
|
|
30
31
|
BUNDLED WITH
|
31
|
-
2.
|
32
|
+
2.3.8
|
data/example-rails-app/Clockfile
CHANGED
@@ -1,23 +1,5 @@
|
|
1
|
-
|
2
|
-
puts "An error has occurred: #{error.class}: #{error.message}"
|
3
|
-
end
|
4
|
-
|
5
|
-
every('2 seconds') do
|
6
|
-
puts "hello from a ruby-clock job"
|
7
|
-
end
|
8
|
-
|
9
|
-
every('2 seconds') do
|
10
|
-
shell 'say hello'
|
11
|
-
end
|
1
|
+
load '../example-app/Clockfile'
|
12
2
|
|
13
3
|
every('2 seconds') do
|
14
4
|
puts Example.count
|
15
5
|
end
|
16
|
-
|
17
|
-
every('2 seconds') do
|
18
|
-
raise "An error."
|
19
|
-
end
|
20
|
-
|
21
|
-
cron('*/10 * * * * *') do
|
22
|
-
puts "cron running on every 10th second #{Time.now}"
|
23
|
-
end
|
data/exe/clock
CHANGED
@@ -41,6 +41,10 @@ def on_error(&on_error_block)
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def around_action(&b)
|
45
|
+
RubyClock.instance.around_actions << b
|
46
|
+
end
|
47
|
+
|
44
48
|
def cron(...)
|
45
49
|
RubyClock.instance.schedule.cron(...)
|
46
50
|
end
|
@@ -58,12 +62,9 @@ end
|
|
58
62
|
load ARGV[0] || 'Clockfile'
|
59
63
|
|
60
64
|
if defined?(::Rails)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
::Rails.application.reloader.wrap do
|
65
|
-
@old_around_trigger.call(job){ yield }
|
66
|
-
end
|
65
|
+
around_action do |job_proc|
|
66
|
+
::Rails.application.reloader.wrap do
|
67
|
+
job_proc.call
|
67
68
|
end
|
68
69
|
end
|
69
70
|
end
|
data/lib/ruby-clock/version.rb
CHANGED
data/lib/ruby-clock.rb
CHANGED
@@ -6,7 +6,19 @@ class RubyClock
|
|
6
6
|
|
7
7
|
include Singleton
|
8
8
|
|
9
|
-
attr_accessor :on_error
|
9
|
+
attr_accessor :on_error, :around_actions
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
@around_actions = []
|
13
|
+
|
14
|
+
def schedule.around_trigger(job_info, &job_proc)
|
15
|
+
RubyClock.instance.call_with_around_action_stack(
|
16
|
+
RubyClock.instance.around_actions.reverse,
|
17
|
+
job_proc,
|
18
|
+
job_info
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
10
22
|
|
11
23
|
def wait_seconds
|
12
24
|
ENV['RUBY_CLOCK_SHUTDOWN_WAIT_SECONDS']&.to_i || 29
|
@@ -116,4 +128,17 @@ class RubyClock
|
|
116
128
|
end
|
117
129
|
end
|
118
130
|
|
131
|
+
def call_with_around_action_stack(wrappers, job_proc, job_info)
|
132
|
+
case wrappers.count
|
133
|
+
when 0
|
134
|
+
job_proc.call(job_info)
|
135
|
+
else
|
136
|
+
call_with_around_action_stack(
|
137
|
+
wrappers[1..],
|
138
|
+
Proc.new{ wrappers.first.call(job_proc, job_info) },
|
139
|
+
job_info
|
140
|
+
)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
119
144
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-clock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Bachir
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-10-
|
11
|
+
date: 2022-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rufus-scheduler
|