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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1064f6cde72a8cf64dc6d6b8ca33772fd07e82b2
4
- data.tar.gz: 353880a557b65213b9638853962aa5cca164f59a
3
+ metadata.gz: 450f7fd85c24f474868daf002b797b7779dc0860
4
+ data.tar.gz: fa64a185b2d32374abdbd46f73dc1f71cfe776b4
5
5
  SHA512:
6
- metadata.gz: 9cef8200ad866b2e733ca179af8055ae3d3813c29c54c3d62431af7eccd6da041bdc1bc5a9069f0029dafd230c74b9eae98c21e2c3b67ff1a5ef78a78433a401
7
- data.tar.gz: e7c691de4d29031ffa8c210fb6d05b4a61716c3832b32bbfbb9b1f1c0f76729270de2ab266e5619fcc2dd85632f673ff4e27e60ee1e756ff46d07ee2d81f4d51
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
+ ```
@@ -8,7 +8,7 @@ module Sidekiq
8
8
  def sidekiq_schedule(schedule, options = {})
9
9
  SidekiqSchedulable.schedules[self.to_s] = {
10
10
  worker: self,
11
- at: schedule,
11
+ cron: schedule,
12
12
  options: options
13
13
  }
14
14
  end
@@ -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[:at])
9
+ time = next_time(schedule[:cron])
8
10
  if schedule[:options][:last_run]
9
- last_time = last_run || last_time(schedule[:at])
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
@@ -1,3 +1,3 @@
1
1
  module SidekiqSchedulable
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
@@ -36,12 +36,12 @@ describe SidekiqSchedulable do
36
36
  {
37
37
  'TestWorker' => {
38
38
  worker: TestWorker,
39
- at: '*/10 * * * * *',
39
+ cron: '*/10 * * * * *',
40
40
  options: {}
41
41
  },
42
42
  'AnotherWorker' => {
43
43
  worker: AnotherWorker,
44
- at: '0 12 * * * *',
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[:at]).to eq('*/10 * * * * *')
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['schedule']).to be_nil
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.schedule!(schedules, current_jobs)
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.schedule!(schedules, current_jobs)
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.schedule!(schedules, current_jobs)
152
- SidekiqSchedulable::Startup.schedule!(schedules, current_jobs)
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.2
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-10-16 00:00:00.000000000 Z
11
+ date: 2015-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq