sidekiq_schedulable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|