sidekiq_schedulable 0.0.2 → 0.0.3
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/README.md +16 -0
- data/lib/sidekiq/schedulable.rb +1 -1
- data/lib/sidekiq_schedulable/schedule.rb +4 -2
- data/lib/sidekiq_schedulable/startup.rb +0 -4
- data/lib/sidekiq_schedulable/version.rb +1 -1
- data/spec/sidekiq_schedulable_spec.rb +16 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 450f7fd85c24f474868daf002b797b7779dc0860
|
4
|
+
data.tar.gz: fa64a185b2d32374abdbd46f73dc1f71cfe776b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 339ab0b0321e86fdc72048af80bddca34bc19c3d02c70920768882f89c9cd2635e3b0ba13c230e051283593098b18f1c01fcfdac3da294d20f83f3fa913f199b
|
7
|
+
data.tar.gz: 1f17dc0ae9ab4b856280d0557c070988e3bf4c15e37f81951177fd74d950b5cca220dfa0dde05b99404b1376a50b01af8d1b00b26e84742e87b3ee81719cff04
|
data/README.md
CHANGED
@@ -21,3 +21,19 @@ class MyJob
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
```
|
24
|
+
|
25
|
+
Using the last run time:
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
class MyJob
|
29
|
+
include Sidekiq::Worker
|
30
|
+
include Sidekiq::Schedulable
|
31
|
+
|
32
|
+
sidekiq_options retry: false, queue: 'my_scheduled_jobs_queue'
|
33
|
+
sidekiq_schedule '*/5 * * * * *', last_run: true
|
34
|
+
|
35
|
+
def perform(last_run)
|
36
|
+
RunReport.between(Time.at(last_run), Time.now)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
```
|
data/lib/sidekiq/schedulable.rb
CHANGED
@@ -3,10 +3,12 @@ require 'parse-cron'
|
|
3
3
|
module SidekiqSchedulable
|
4
4
|
module Schedule
|
5
5
|
def self.enqueue(schedule, last_run = nil)
|
6
|
+
return unless schedule[:cron]
|
7
|
+
|
6
8
|
worker = schedule[:worker]
|
7
|
-
time = next_time(schedule[:
|
9
|
+
time = next_time(schedule[:cron])
|
8
10
|
if schedule[:options][:last_run]
|
9
|
-
last_time = last_run || last_time(schedule[:
|
11
|
+
last_time = last_run || last_time(schedule[:cron])
|
10
12
|
worker.perform_at(time, last_time.to_f)
|
11
13
|
else
|
12
14
|
worker.perform_at(time)
|
@@ -2,10 +2,6 @@ require 'sidekiq_schedulable/schedule'
|
|
2
2
|
|
3
3
|
module SidekiqSchedulable
|
4
4
|
class Startup
|
5
|
-
def self.schedule!(schedules, current_jobs)
|
6
|
-
new(schedules, current_jobs).schedule!
|
7
|
-
end
|
8
|
-
|
9
5
|
def initialize(schedules, current_jobs)
|
10
6
|
@schedules = schedules
|
11
7
|
@current_jobs = current_jobs
|
@@ -36,12 +36,12 @@ describe SidekiqSchedulable do
|
|
36
36
|
{
|
37
37
|
'TestWorker' => {
|
38
38
|
worker: TestWorker,
|
39
|
-
|
39
|
+
cron: '*/10 * * * * *',
|
40
40
|
options: {}
|
41
41
|
},
|
42
42
|
'AnotherWorker' => {
|
43
43
|
worker: AnotherWorker,
|
44
|
-
|
44
|
+
cron: '0 12 * * * *',
|
45
45
|
options: { last_run: true }
|
46
46
|
}
|
47
47
|
}
|
@@ -58,7 +58,7 @@ describe SidekiqSchedulable do
|
|
58
58
|
it "adds the schedule to the schedules" do
|
59
59
|
schedule = SidekiqSchedulable.schedules['TestWorker']
|
60
60
|
|
61
|
-
expect(schedule[:
|
61
|
+
expect(schedule[:cron]).to eq('*/10 * * * * *')
|
62
62
|
expect(schedule[:worker]).to eq(TestWorker)
|
63
63
|
expect(schedule[:options]).to eq({})
|
64
64
|
end
|
@@ -119,7 +119,7 @@ describe SidekiqSchedulable do
|
|
119
119
|
true
|
120
120
|
end
|
121
121
|
|
122
|
-
expect(item['
|
122
|
+
expect(item['scheduled']).to be_nil
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
@@ -131,7 +131,7 @@ describe SidekiqSchedulable do
|
|
131
131
|
end
|
132
132
|
|
133
133
|
it "enqueues a job for the given worker on an empty queue" do
|
134
|
-
SidekiqSchedulable::Startup.
|
134
|
+
SidekiqSchedulable::Startup.new(schedules, current_jobs).schedule!
|
135
135
|
|
136
136
|
expect(TestWorker.jobs.size).to eq(1)
|
137
137
|
expect(TestWorker.jobs.first['at']).to eq(next_ten_minutes.to_f)
|
@@ -140,7 +140,7 @@ describe SidekiqSchedulable do
|
|
140
140
|
it "adds the last_run argument based on the schedule" do
|
141
141
|
last_run = midnight - 60 * 60 * 12
|
142
142
|
|
143
|
-
SidekiqSchedulable::Startup.
|
143
|
+
SidekiqSchedulable::Startup.new(schedules, current_jobs).schedule!
|
144
144
|
|
145
145
|
expect(AnotherWorker.jobs.size).to eq(1)
|
146
146
|
expect(AnotherWorker.jobs.first['args']).to eq([last_run.to_f])
|
@@ -148,10 +148,18 @@ describe SidekiqSchedulable do
|
|
148
148
|
end
|
149
149
|
|
150
150
|
it "does not enqueue a duplicate job for the given worker" do
|
151
|
-
SidekiqSchedulable::Startup.
|
152
|
-
SidekiqSchedulable::Startup.
|
151
|
+
SidekiqSchedulable::Startup.new(schedules, current_jobs).schedule!
|
152
|
+
SidekiqSchedulable::Startup.new(schedules, current_jobs).schedule!
|
153
153
|
|
154
154
|
expect(TestWorker.jobs.size).to eq(1)
|
155
155
|
end
|
156
|
+
|
157
|
+
it "does not enqueue a job with no schedule" do
|
158
|
+
schedules['TestWorker'][:cron] = nil
|
159
|
+
|
160
|
+
SidekiqSchedulable::Startup.new(schedules, current_jobs).schedule!
|
161
|
+
|
162
|
+
expect(TestWorker.jobs.size).to eq(0)
|
163
|
+
end
|
156
164
|
end
|
157
165
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq_schedulable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Buchanan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|