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 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