sidekiq-cron 1.0.4 → 1.3.0
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 +5 -5
- data/Changes.md +34 -0
- data/Dockerfile +1 -1
- data/Gemfile +1 -30
- data/README.md +149 -65
- data/Rakefile +0 -18
- data/docker-compose.yml +3 -1
- data/lib/sidekiq/cron/job.rb +92 -25
- data/lib/sidekiq/cron/launcher.rb +34 -40
- data/lib/sidekiq/cron/locales/de.yml +1 -1
- data/lib/sidekiq/cron/locales/en.yml +5 -1
- data/lib/sidekiq/cron/locales/ja.yml +1 -1
- data/lib/sidekiq/cron/locales/ru.yml +1 -1
- data/lib/sidekiq/cron/locales/zh-CN.yml +1 -1
- data/lib/sidekiq/cron/poller.rb +5 -5
- data/lib/sidekiq/cron/version.rb +7 -0
- data/lib/sidekiq/cron/views/cron.erb +8 -6
- data/lib/sidekiq/cron/views/cron.slim +5 -4
- data/lib/sidekiq/cron/views/cron_show.erb +88 -0
- data/lib/sidekiq/cron/views/cron_show.slim +61 -0
- data/lib/sidekiq/cron/web_extension.rb +20 -3
- data/lib/sidekiq/cron.rb +1 -0
- data/sidekiq-cron.gemspec +29 -108
- data/test/integration/performance_test.rb +3 -5
- data/test/test_helper.rb +30 -19
- data/test/unit/job_test.rb +134 -3
- data/test/unit/poller_test.rb +1 -3
- data/test/unit/web_extension_test.rb +56 -36
- metadata +33 -159
- data/.travis.yml +0 -21
- data/VERSION +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '091abb12b81574bf5fad5130f4e343aaad6adeceb0daae8c46a6d09dbaa7ee58'
|
4
|
+
data.tar.gz: 1ecbf9ba2fd82ff69a423993e7aa3678e7fabc6fb55e2acea74ec1cb83a8af3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cfd9a8e2efdcf3ae293533421a1c09b7dcc3154e90d749fd3e3a47ccaff6d673daa68877b2ca3b7939139603ee04e816c8c5ae51ef64d818d8d013eff43d9f0
|
7
|
+
data.tar.gz: 0d86e3bb4b06869889934a37ef30f117a4a28769a07e75b3d7547c49d9d8e5dfe4931f608b8b7b18cdc1b70cfdaf6be55aa043844b047b877ff7dfa21271a9f4
|
data/Changes.md
CHANGED
@@ -1,3 +1,37 @@
|
|
1
|
+
v 1.3.0
|
2
|
+
-------
|
3
|
+
|
4
|
+
- add confirmation dialog when enquing jobs from UI
|
5
|
+
- start to support Sidekiq `average_scheduled_poll_interval` option (replaced `poll_interval`)
|
6
|
+
- enable to use latest fugit to parse cron notation alowing use of natural language (ie `"every 30 minutes"`)
|
7
|
+
- fix deprecation warning for redis 4.6.x
|
8
|
+
- fix different response from Redis#exists in different redis versions
|
9
|
+
- All PRs:
|
10
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/275
|
11
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/287
|
12
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/309
|
13
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/299
|
14
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/314
|
15
|
+
- https://github.com/ondrejbartas/sidekiq-cron/pull/288
|
16
|
+
|
17
|
+
v 1.2.0
|
18
|
+
-------
|
19
|
+
|
20
|
+
- updated readme
|
21
|
+
- fix problem with Sidekiq::Launcher and requiring it when not needed
|
22
|
+
- better patching of Sidekiq::Launcher
|
23
|
+
- fixed Dockerfile
|
24
|
+
|
25
|
+
v 1.1.0
|
26
|
+
-------
|
27
|
+
|
28
|
+
- updated readme
|
29
|
+
- fix unit tests - changed argument error when getting invalid cron format
|
30
|
+
- when fallbacking old job enqueued time use `Time.parse` šwithout format (so ruby can decide best method to parse it)
|
31
|
+
- add option `date_as_argument` which will add to your job arguments on last place `Time.now.to_f` when it was eneuqued
|
32
|
+
- add option `description` which will allow you to add notes to your jobs so in web view you can see it
|
33
|
+
- fixed translations
|
34
|
+
|
1
35
|
v 1.0.4
|
2
36
|
-------
|
3
37
|
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
@@ -1,32 +1,3 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
|
4
|
-
gem 'fugit', '~> 1.1'
|
5
|
-
|
6
|
-
group :development do
|
7
|
-
gem 'bundler'
|
8
|
-
gem 'simplecov'
|
9
|
-
|
10
|
-
gem 'redis-namespace', '>= 1.5.2'
|
11
|
-
gem 'shoulda-context'
|
12
|
-
|
13
|
-
gem 'rack'
|
14
|
-
gem 'rack-test'
|
15
|
-
|
16
|
-
gem 'jeweler'
|
17
|
-
|
18
|
-
gem 'minitest'
|
19
|
-
gem 'test-unit'
|
20
|
-
gem 'sdoc' # sdoc -N .
|
21
|
-
|
22
|
-
gem 'slim'
|
23
|
-
gem 'sinatra'
|
24
|
-
|
25
|
-
gem 'mocha'
|
26
|
-
gem 'coveralls'
|
27
|
-
|
28
|
-
gem 'shotgun'
|
29
|
-
|
30
|
-
gem 'guard'
|
31
|
-
gem 'guard-minitest'
|
32
|
-
end
|
3
|
+
gemspec
|
data/README.md
CHANGED
@@ -1,64 +1,68 @@
|
|
1
|
-
Sidekiq-Cron
|
2
|
-
================================================================================================================================================================================================================================================================================================================================================================================================================================================
|
1
|
+
# Sidekiq-Cron
|
3
2
|
|
3
|
+
[](http://badge.fury.io/rb/sidekiq-cron)
|
4
|
+
[](https://github.com/ondrejbartas/sidekiq-cron/actions)
|
5
|
+
[](https://coveralls.io/github/ondrejbartas/sidekiq-cron?branch=master)
|
4
6
|
[](https://gitter.im/ondrejbartas/sidekiq-cron?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
5
7
|
|
6
|
-
|
8
|
+
> A scheduling add-on for [Sidekiq](http://sidekiq.org)
|
7
9
|
|
8
|
-
|
10
|
+
🎬 [Introduction video about Sidekiq-Cron by Drifting Ruby](https://www.driftingruby.com/episodes/periodic-tasks-with-sidekiq-cron)
|
9
11
|
|
10
|
-
|
12
|
+
Sidekiq-Cron runs a thread alongside Sidekiq workers to schedule jobs at specified times (using cron notation `* * * * *` parsed by [Fugit](https://github.com/floraison/fugit), more about [cron notation](http://www.nncron.ru/help/EN/working/cron-format.htm).
|
11
13
|
|
12
14
|
Checks for new jobs to schedule every 30 seconds and doesn't schedule the same job multiple times when more than one Sidekiq worker is running.
|
13
15
|
|
14
16
|
Scheduling jobs are added only when at least one Sidekiq process is running, but it is safe to use Sidekiq-Cron in environments where multiple Sidekiq processes or nodes are running.
|
15
17
|
|
16
|
-
If you want to know how scheduling work, check out [under the hood](#under-the-hood)
|
18
|
+
If you want to know how scheduling work, check out [under the hood](#under-the-hood).
|
17
19
|
|
18
|
-
Works with ActiveJob (Rails 4.2+)
|
20
|
+
Works with ActiveJob (Rails 4.2+).
|
19
21
|
|
20
|
-
You don't need Sidekiq PRO, you can use this gem with plain
|
22
|
+
You don't need Sidekiq PRO, you can use this gem with plain Sidekiq.
|
21
23
|
|
22
|
-
|
23
|
-
-----------------
|
24
|
+
## Upgrade from <0.6x to 1.0.x
|
24
25
|
|
25
|
-
-
|
26
|
-
- Sidekiq 5, or 4, or 3 and greater is required (for Sidekiq < 4 use version sidekiq-cron 0.3.1)
|
26
|
+
Please be aware that Sidekiq-Cron < 1.0 was relying on rufus-scheduler < 3.5. Using those older sidekiq-cron with rufus-scheduler >= 3.5 ends up with jobs failing on creation. Sidekiq-cron 1.0 includes a patch that switches from rufus-scheduler to rufus-scheduler's core dependency, fugit.
|
27
27
|
|
28
|
-
|
29
|
-
----------
|
30
|
-
before upgrading to new version, please read:
|
31
|
-
[Change Log](https://github.com/ondrejbartas/sidekiq-cron/blob/master/Changes.md)
|
28
|
+
## Changelog
|
32
29
|
|
33
|
-
|
34
|
-
------------
|
30
|
+
Before upgrading to new version, please read our [ChangeLog](Changes.md).
|
35
31
|
|
36
|
-
|
32
|
+
## Installation
|
37
33
|
|
38
|
-
|
34
|
+
### Requirements
|
39
35
|
|
40
|
-
|
36
|
+
- Redis 2.8 or greater is required. (Redis 3.0.3 or greater is recommended for large scale use)
|
37
|
+
- Sidekiq 5, or 4, or 3 and greater is required (for Sidekiq < 4 use version sidekiq-cron 0.3.1)
|
41
38
|
|
39
|
+
Install the gem:
|
42
40
|
|
43
|
-
|
44
|
-
|
41
|
+
$ gem install sidekiq-cron
|
42
|
+
|
43
|
+
Or add to your `Gemfile` and run `bundle install`:
|
45
44
|
|
45
|
+
gem "sidekiq-cron", "~> 1.1"
|
46
|
+
|
47
|
+
## Getting Started
|
46
48
|
|
47
49
|
If you are not using Rails, you need to add `require 'sidekiq-cron'` somewhere after `require 'sidekiq'`.
|
48
50
|
|
49
|
-
|
51
|
+
**Job properties:**
|
50
52
|
|
51
53
|
```ruby
|
52
54
|
{
|
53
|
-
'name'
|
54
|
-
'cron'
|
55
|
+
'name' => 'name_of_job', # must be uniq!
|
56
|
+
'cron' => '1 * * * *', # execute at 1 minute of every hour, ex: 12:01, 13:01, 14:01, 15:01, ... (HH:MM)
|
55
57
|
'class' => 'MyClass',
|
56
|
-
#OPTIONAL
|
58
|
+
# OPTIONAL
|
57
59
|
'queue' => 'name of queue',
|
58
|
-
'args'
|
60
|
+
'args' => '[Array or Hash] of arguments which will be passed to perform method',
|
61
|
+
'date_as_argument' => true, # add the time of execution as last argument of the perform method
|
59
62
|
'active_job' => true, # enqueue job through rails 4.2+ active job interface
|
60
63
|
'queue_name_prefix' => 'prefix', # rails 4.2+ active job queue with prefix
|
61
|
-
'queue_name_delimiter' => '.' # rails 4.2+ active job queue with custom delimiter
|
64
|
+
'queue_name_delimiter' => '.', # rails 4.2+ active job queue with custom delimiter
|
65
|
+
'description' => 'A sentence describing what work this job performs.'
|
62
66
|
}
|
63
67
|
```
|
64
68
|
|
@@ -66,20 +70,27 @@ _Job properties_:
|
|
66
70
|
|
67
71
|
For testing your cron notation you can use [crontab.guru](https://crontab.guru).
|
68
72
|
|
69
|
-
|
73
|
+
Sidekiq-Cron uses [Fugit](https://github.com/floraison/fugit) to parse the cronline.
|
74
|
+
|
70
75
|
If using Rails, this is evaluated against the timezone configured in Rails, otherwise the default is UTC.
|
71
76
|
|
72
77
|
If you want to have your jobs enqueued based on a different time zone you can specify a timezone in the cronline,
|
73
78
|
like this `'0 22 * * 1-5 America/Chicago'`.
|
74
79
|
|
75
|
-
See [rufus-scheduler documentation](https://github.com/jmettraux/rufus-scheduler#a-note-about-timezones) for more information.
|
80
|
+
See [rufus-scheduler documentation](https://github.com/jmettraux/rufus-scheduler#a-note-about-timezones) for more information.
|
81
|
+
|
82
|
+
**NOTE** Rufus scheduler is using Fugit under the hood, so documentation for Rufus Scheduler can help you also.
|
76
83
|
|
77
84
|
### What objects/classes can be scheduled
|
85
|
+
|
78
86
|
#### Sidekiq Worker
|
87
|
+
|
79
88
|
In this example, we are using `HardWorker` which looks like:
|
89
|
+
|
80
90
|
```ruby
|
81
91
|
class HardWorker
|
82
92
|
include Sidekiq::Worker
|
93
|
+
|
83
94
|
def perform(*args)
|
84
95
|
# do something
|
85
96
|
end
|
@@ -87,7 +98,9 @@ end
|
|
87
98
|
```
|
88
99
|
|
89
100
|
#### Active Job Worker
|
90
|
-
|
101
|
+
|
102
|
+
You can schedule `ExampleJob` which looks like:
|
103
|
+
|
91
104
|
```ruby
|
92
105
|
class ExampleJob < ActiveJob::Base
|
93
106
|
queue_as :default
|
@@ -98,11 +111,15 @@ class ExampleJob < ActiveJob::Base
|
|
98
111
|
end
|
99
112
|
```
|
100
113
|
|
114
|
+
For Active jobs you can use `symbolize_args: true` in `Sidekiq::Cron::Job.create` or in Hash configuration,
|
115
|
+
which will ensure that arguments you are passing to it will be symbolized when passed back to `perform` method in worker.
|
116
|
+
|
101
117
|
#### Adding Cron job:
|
102
|
-
```ruby
|
103
118
|
|
119
|
+
```ruby
|
104
120
|
class HardWorker
|
105
121
|
include Sidekiq::Worker
|
122
|
+
|
106
123
|
def perform(name, count)
|
107
124
|
# do something
|
108
125
|
end
|
@@ -123,16 +140,15 @@ else
|
|
123
140
|
puts job.errors
|
124
141
|
end
|
125
142
|
|
126
|
-
#or simple
|
127
|
-
|
143
|
+
# or simple
|
128
144
|
unless job.save
|
129
|
-
puts job.errors #will return array of errors
|
145
|
+
puts job.errors # will return array of errors
|
130
146
|
end
|
131
147
|
```
|
132
148
|
|
133
149
|
Load more jobs from hash:
|
134
|
-
```ruby
|
135
150
|
|
151
|
+
```ruby
|
136
152
|
hash = {
|
137
153
|
'name_of_job' => {
|
138
154
|
'class' => 'MyClass',
|
@@ -149,6 +165,7 @@ Sidekiq::Cron::Job.load_from_hash hash
|
|
149
165
|
```
|
150
166
|
|
151
167
|
Load more jobs from array:
|
168
|
+
|
152
169
|
```ruby
|
153
170
|
array = [
|
154
171
|
{
|
@@ -167,17 +184,17 @@ array = [
|
|
167
184
|
Sidekiq::Cron::Job.load_from_array array
|
168
185
|
```
|
169
186
|
|
170
|
-
Bang-suffixed methods will remove jobs that are not present in the given hash/array,
|
171
|
-
update jobs that have the same names, and create new ones when the names are previously unknown.
|
187
|
+
Bang-suffixed methods will remove jobs that are not present in the given hash/array, update jobs that have the same names, and create new ones when the names are previously unknown.
|
172
188
|
|
173
189
|
```ruby
|
174
190
|
Sidekiq::Cron::Job#load_from_hash! hash
|
175
191
|
Sidekiq::Cron::Job#load_from_array! array
|
176
192
|
```
|
177
193
|
|
178
|
-
|
194
|
+
Or from YAML (same notation as Resque-scheduler):
|
195
|
+
|
179
196
|
```yaml
|
180
|
-
#config/schedule.yml
|
197
|
+
# config/schedule.yml
|
181
198
|
|
182
199
|
my_first_job:
|
183
200
|
cron: "*/5 * * * *"
|
@@ -193,7 +210,7 @@ second_job:
|
|
193
210
|
```
|
194
211
|
|
195
212
|
```ruby
|
196
|
-
#initializers/sidekiq.rb
|
213
|
+
# config/initializers/sidekiq.rb
|
197
214
|
schedule_file = "config/schedule.yml"
|
198
215
|
|
199
216
|
if File.exist?(schedule_file) && Sidekiq.server?
|
@@ -201,56 +218,60 @@ if File.exist?(schedule_file) && Sidekiq.server?
|
|
201
218
|
end
|
202
219
|
```
|
203
220
|
|
204
|
-
|
221
|
+
Or you can use for loading jobs from yml file [sidekiq-cron-tasks](https://github.com/coverhound/sidekiq-cron-tasks) which will add rake task `bundle exec rake sidekiq_cron:load` to your rails application.
|
222
|
+
|
223
|
+
### Finding jobs
|
205
224
|
|
206
|
-
#### Finding jobs
|
207
225
|
```ruby
|
208
|
-
#return array of all jobs
|
226
|
+
# return array of all jobs
|
209
227
|
Sidekiq::Cron::Job.all
|
210
228
|
|
211
|
-
#return one job by its unique name - case sensitive
|
229
|
+
# return one job by its unique name - case sensitive
|
212
230
|
Sidekiq::Cron::Job.find "Job Name"
|
213
231
|
|
214
|
-
#return one job by its unique name - you can use hash with 'name' key
|
232
|
+
# return one job by its unique name - you can use hash with 'name' key
|
215
233
|
Sidekiq::Cron::Job.find name: "Job Name"
|
216
234
|
|
217
|
-
#if job can't be found nil is returned
|
235
|
+
# if job can't be found nil is returned
|
218
236
|
```
|
219
237
|
|
220
|
-
|
238
|
+
### Destroy jobs:
|
239
|
+
|
221
240
|
```ruby
|
222
|
-
#
|
241
|
+
# destroy all jobs
|
223
242
|
Sidekiq::Cron::Job.destroy_all!
|
224
243
|
|
225
|
-
#destroy job by its name
|
244
|
+
# destroy job by its name
|
226
245
|
Sidekiq::Cron::Job.destroy "Job Name"
|
227
246
|
|
228
|
-
#destroy found job
|
247
|
+
# destroy found job
|
229
248
|
Sidekiq::Cron::Job.find('Job name').destroy
|
230
249
|
```
|
231
250
|
|
232
|
-
|
251
|
+
### Work with job:
|
252
|
+
|
233
253
|
```ruby
|
234
254
|
job = Sidekiq::Cron::Job.find('Job name')
|
235
255
|
|
236
|
-
#disable cron scheduling
|
256
|
+
# disable cron scheduling
|
237
257
|
job.disable!
|
238
258
|
|
239
|
-
#enable cron scheduling
|
259
|
+
# enable cron scheduling
|
240
260
|
job.enable!
|
241
261
|
|
242
|
-
#get status of job:
|
262
|
+
# get status of job:
|
243
263
|
job.status
|
244
264
|
# => enabled/disabled
|
245
265
|
|
246
|
-
#enqueue job right now!
|
266
|
+
# enqueue job right now!
|
247
267
|
job.enque!
|
248
268
|
```
|
249
269
|
|
250
|
-
How to start scheduling?
|
270
|
+
### How to start scheduling?
|
271
|
+
|
251
272
|
Just start Sidekiq workers by running:
|
252
273
|
|
253
|
-
sidekiq
|
274
|
+
$ sidekiq
|
254
275
|
|
255
276
|
### Web UI for Cron Jobs
|
256
277
|
|
@@ -263,7 +284,7 @@ With this, you will get:
|
|
263
284
|
### Forking Processes
|
264
285
|
|
265
286
|
If you're using a forking web server like Unicorn you may run into an issue where the Redis connection is used
|
266
|
-
before the process forks, causing the following exception
|
287
|
+
before the process forks, causing the following exception:
|
267
288
|
|
268
289
|
Redis::InheritedError: Tried to use a connection from a child process without reconnecting. You need to reconnect to Redis after forking.
|
269
290
|
|
@@ -279,37 +300,100 @@ Sidekiq.configure_server do |config|
|
|
279
300
|
end
|
280
301
|
```
|
281
302
|
|
282
|
-
|
303
|
+
**NOTE** This API is only available in Sidekiq 3.x.
|
304
|
+
|
305
|
+
## Tests in Sidekiq-Cron
|
306
|
+
|
307
|
+
If you need to check code of sidekiq-cron run `rake test` in this repository.
|
283
308
|
|
284
309
|
## Under the hood
|
285
310
|
|
286
311
|
When you start the Sidekiq process, it starts one thread with `Sidekiq::Poller` instance, which perform the adding of scheduled jobs to queues, retries etc.
|
287
312
|
|
288
|
-
Sidekiq-Cron adds itself into this start procedure and starts another thread with `Sidekiq::Cron::Poller` which checks all enabled Sidekiq cron jobs every
|
313
|
+
Sidekiq-Cron adds itself into this start procedure and starts another thread with `Sidekiq::Cron::Poller` which checks all enabled Sidekiq cron jobs every 30 seconds, if they should be added to queue (their cronline matches time of check).
|
289
314
|
|
290
315
|
Sidekiq-Cron is checking jobs to be enqueued every 30s by default, you can change it by setting:
|
291
|
-
|
316
|
+
|
317
|
+
```ruby
|
318
|
+
# For Sidekiq >= 3.4
|
319
|
+
Sidekiq.options[:average_scheduled_poll_interval] = 10
|
320
|
+
|
321
|
+
# For older versions of Sidekiq
|
292
322
|
Sidekiq.options[:poll_interval] = 10
|
293
323
|
```
|
294
324
|
|
295
325
|
Sidekiq-Cron is safe to use with multiple sidekiq processes or nodes. It uses a Redis sorted set to determine that only the first process who asks can enqueue scheduled jobs into the queue.
|
296
326
|
|
297
327
|
## Thanks to
|
328
|
+
* [@284km](https://github.com/284km)
|
298
329
|
* [@7korobi](https://github.com/7korobi)
|
330
|
+
* [@adrianobarroso](https://github.com/adrianobarroso])
|
331
|
+
* [@alexeyramazanov](https://github.com/alexeyramazanov)
|
299
332
|
* [@antulik](https://github.com/antulik)
|
333
|
+
* [@arthurbryant](https://github.com/arthurbryant)
|
334
|
+
* [@cabello](https://github.com/cabello)
|
335
|
+
* [@camkidman](https://github.com/camkidman)
|
336
|
+
* [@cgunther](https://github.com/cgunther)
|
337
|
+
* [@chuchuva](https://github.com/chuchuva)
|
338
|
+
* [@corroded](https://github.com/corroded)
|
339
|
+
* [@D1ceWard](https://github.com/D1ceWard])
|
340
|
+
* [@davidtrogers](https://github.com/davidtrogers)
|
341
|
+
* [@denispeplin](https://github.com/denispeplin)
|
342
|
+
* [@dwarburt](https://github.com/dwarburt)
|
343
|
+
* [@Envek](https://github.com/Envek)
|
344
|
+
* [@Eunix](https://github.com/Eunix)
|
300
345
|
* [@felixbuenemann](https://github.com/felixbuenemann)
|
346
|
+
* [@film42](https://github.com/film42])
|
347
|
+
* [@giriss](https://github.com/giriss)
|
348
|
+
* [@gitter](https://github.com/gitter)
|
301
349
|
* [@gstark](https://github.com/gstark)
|
350
|
+
* [@h0jeZvgoxFepBQ2C](https://github.com/h0jeZvgoxFepBQ2C)
|
351
|
+
* [@incubus](https://github.com/incubus)
|
352
|
+
* [@jack0pan](https://github.com/jack0pan)
|
353
|
+
* [@jmettraux](https://github.com/jmettraux)
|
354
|
+
* [@johnathanludwig](https://github.com/johnathanludwig)
|
355
|
+
* [@joshuacronemeyer](https://github.com/joshuacronemeyer)
|
356
|
+
* [@jpserra](https://github.com/jpserra)
|
357
|
+
* [@Junyulive](https://github.com/Junyulive)
|
358
|
+
* [@le0pard](https://github.com/le0pard)
|
359
|
+
* [@lepfhty](https://github.com/lepfhty)
|
360
|
+
* [@macool](https://github.com/macool)
|
361
|
+
* [@masayukioguni](https://github.com/masayukioguni)
|
362
|
+
* [@matsimitsu](https://github.com/matsimitsu)
|
363
|
+
* [@merrington](https://github.com/merrington)
|
364
|
+
* [@MikeRogers0](https://github.com/MikeRogers0)
|
365
|
+
* [@MMartyn](https://github.com/MMartyn)
|
366
|
+
* [@mrchucho](https://github.com/mrchucho)
|
367
|
+
* [@n00dle](https://github.com/n00dle)
|
368
|
+
* [@ngouy](https://github.com/ngouy)
|
369
|
+
* [@nhoffmann](https://github.com/nhoffmann)
|
370
|
+
* [@nicolasleger](https://github.com/nicolasleger)
|
371
|
+
* [@nikolai-b](https://github.com/nikolai-b)
|
372
|
+
* [@oivoodoo](https://github.com/oivoodoo)
|
373
|
+
* [@paniko0](https://github.com/paniko0)
|
374
|
+
* [@petergoldstein](https://github.com/petergoldstein)
|
302
375
|
* [@RajRoR](https://github.com/RajRoR)
|
376
|
+
* [@rmm5t](https://github.com/rmm5t)
|
303
377
|
* [@romeuhcf](https://github.com/romeuhcf)
|
378
|
+
* [@rylwin](https://github.com/rylwin)
|
379
|
+
* [@ryohashimoto](https://github.com/ryohashimoto)
|
380
|
+
* [@safeforge](https://github.com/safeforge)
|
304
381
|
* [@siruguri](https://github.com/siruguri)
|
305
382
|
* [@Soliah](https://github.com/Soliah)
|
383
|
+
* [@spk](https://github.com/spk)
|
306
384
|
* [@stephankaag](https://github.com/stephankaag)
|
385
|
+
* [@stormsilver](https://github.com/stormsilver)
|
307
386
|
* [@sue445](https://github.com/sue445)
|
308
387
|
* [@sylg](https://github.com/sylg)
|
388
|
+
* [@tai2](https://github.com/tai2)
|
389
|
+
* [@tfluehmann](https://github.com/tfluehmann)
|
390
|
+
* [@timminkov](https://github.com/timminkov)
|
391
|
+
* [@tisba](https://github.com/tisba)
|
309
392
|
* [@tmeinlschmidt](https://github.com/tmeinlschmidt)
|
393
|
+
* [@tomprats](https://github.com/tomprats)
|
394
|
+
* [@zedtux](https://github.com/zedtux)
|
310
395
|
* [@zerobearing2](https://github.com/zerobearing2)
|
311
396
|
|
312
|
-
|
313
397
|
## Contributing to sidekiq-cron
|
314
398
|
|
315
399
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
@@ -322,4 +406,4 @@ Sidekiq-Cron is safe to use with multiple sidekiq processes or nodes. It uses a
|
|
322
406
|
|
323
407
|
## Copyright
|
324
408
|
|
325
|
-
Copyright (c) 2013 Ondrej Bartas. See LICENSE.txt for further details.
|
409
|
+
Copyright (c) 2013 Ondrej Bartas. See [LICENSE](LICENSE.txt) for further details.
|
data/Rakefile
CHANGED
@@ -13,26 +13,8 @@ rescue Bundler::BundlerError => e
|
|
13
13
|
end
|
14
14
|
require 'rake'
|
15
15
|
|
16
|
-
require 'jeweler'
|
17
|
-
Jeweler::Tasks.new do |gem|
|
18
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
19
|
-
gem.name = "sidekiq-cron"
|
20
|
-
gem.homepage = "http://github.com/ondrejbartas/sidekiq-cron"
|
21
|
-
gem.license = "MIT"
|
22
|
-
gem.summary = %Q{Sidekiq Cron helps to add repeated scheduled jobs}
|
23
|
-
gem.description = %Q{Enables to set jobs to be run in specified time (using CRON notation)}
|
24
|
-
gem.email = "ondrej@bartas.cz"
|
25
|
-
gem.authors = ["Ondrej Bartas"]
|
26
|
-
# dependencies defined in Gemfile
|
27
|
-
end
|
28
|
-
Jeweler::RubygemsDotOrgTasks.new
|
29
|
-
|
30
16
|
#TESTING
|
31
17
|
|
32
|
-
task :doc do
|
33
|
-
system 'sdoc -N .'
|
34
|
-
end
|
35
|
-
|
36
18
|
require 'rake/testtask'
|
37
19
|
task :default => :test
|
38
20
|
|
data/docker-compose.yml
CHANGED