delayed_cron 0.2.3 → 0.2.4
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/Gemfile.lock +2 -2
- data/README.md +7 -4
- data/lib/delayed_cron/version.rb +1 -1
- data/lib/delayed_cron.rb +10 -6
- data/spec/delayed_cron_spec.rb +16 -5
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c34b1f4a8ad81433f720139d2ab42fc434e57c26
|
4
|
+
data.tar.gz: 35e783bd8f72dfa67fcf02ec651a1b148738dab2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bde551335a82a185dbcdebd8631d9c57b6528f47302c3dd90bc10240e2794d7c508558dd4ce5788bd79303fc5177816455a175c4e0fd3bfad3053113662758ac
|
7
|
+
data.tar.gz: 3225ce660f0a19b7c20a3a76e93544a22e598882052d2bf98014f4a88d984bed7793b36f36b6fe5cee22f0753851a82c6e3d72352245f19e09b5f58c11775c4f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
delayed_cron (0.2.
|
4
|
+
delayed_cron (0.2.4)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
activesupport (= 4.1.2)
|
76
76
|
rake (>= 0.8.7)
|
77
77
|
thor (>= 0.18.1, < 2.0)
|
78
|
-
rake (10.
|
78
|
+
rake (10.4.2)
|
79
79
|
redis (3.1.0)
|
80
80
|
redis-namespace (1.5.0)
|
81
81
|
redis (~> 3.0, >= 3.0.4)
|
data/README.md
CHANGED
@@ -7,10 +7,10 @@ run cron jobs with sidekiq, delayed_job, resque, or sucker_punch
|
|
7
7
|
### DEPENDENCIES:
|
8
8
|
- background process handler: sidekiq, delayed_job, resque, or sucker_punch
|
9
9
|
|
10
|
-
### INSTALL
|
10
|
+
### INSTALL
|
11
11
|
|
12
12
|
```ruby
|
13
|
-
gem "delayed_cron", "0.2.
|
13
|
+
gem "delayed_cron", "0.2.4"
|
14
14
|
```
|
15
15
|
|
16
16
|
### USE IN MODEL
|
@@ -20,7 +20,7 @@ class Product < ActiveRecord::Base
|
|
20
20
|
...
|
21
21
|
|
22
22
|
# Define in Model
|
23
|
-
# * this is an alternative to the
|
23
|
+
# * this is an alternative to the cron_jobs array in config
|
24
24
|
#
|
25
25
|
# OPTIONS: *optional
|
26
26
|
# - interval - override default_inteveral from setup
|
@@ -44,7 +44,10 @@ DelayedCron.setup do |config|
|
|
44
44
|
config.default_interval = 10.minutes
|
45
45
|
|
46
46
|
# array of methods to run at the above configured interval
|
47
|
-
config.cron_jobs = [
|
47
|
+
config.cron_jobs = [
|
48
|
+
"SomeClass.expensive_task", # will run at default interval
|
49
|
+
{ job: "AnotherClass.other_expensive_task", interval: 1.hour } # override default
|
50
|
+
]
|
48
51
|
|
49
52
|
end
|
50
53
|
```
|
data/lib/delayed_cron/version.rb
CHANGED
data/lib/delayed_cron.rb
CHANGED
@@ -15,9 +15,13 @@ module DelayedCron
|
|
15
15
|
def define_cron_jobs
|
16
16
|
return false unless cron_jobs.present?
|
17
17
|
cron_jobs.each do |job|
|
18
|
+
obj = job
|
19
|
+
job_is_hash = job.is_a?(Hash)
|
20
|
+
job = job_is_hash ? obj[:job] : job
|
21
|
+
interval = job_is_hash ? obj[:interval] : default_interval
|
18
22
|
klass, name = job.split(".")
|
19
|
-
# TODO: raise error if interval is not set
|
20
|
-
DelayedCron.schedule(klass, name, { interval:
|
23
|
+
# TODO: raise error if interval is not set
|
24
|
+
DelayedCron.schedule(klass, name, { interval: interval })
|
21
25
|
end
|
22
26
|
end
|
23
27
|
|
@@ -55,10 +59,10 @@ module DelayedCron
|
|
55
59
|
end
|
56
60
|
|
57
61
|
def parse_time(time_array)
|
58
|
-
{
|
59
|
-
hours: time_array[0],
|
60
|
-
mins: time_array[1],
|
61
|
-
secs: time_array[2] || 0,
|
62
|
+
{
|
63
|
+
hours: time_array[0],
|
64
|
+
mins: time_array[1],
|
65
|
+
secs: time_array[2] || 0,
|
62
66
|
tz: time_array[3] || Time.now.strftime("%z").to_i
|
63
67
|
}
|
64
68
|
end
|
data/spec/delayed_cron_spec.rb
CHANGED
@@ -5,7 +5,7 @@ require 'rspec-sidekiq'
|
|
5
5
|
describe DelayedCron do
|
6
6
|
|
7
7
|
describe ".setup" do
|
8
|
-
|
8
|
+
|
9
9
|
it "yields self" do
|
10
10
|
DelayedCron.setup do |config|
|
11
11
|
DelayedCron.should == config
|
@@ -31,11 +31,22 @@ describe DelayedCron do
|
|
31
31
|
DelayedCron.cron_jobs.should be_an(Array)
|
32
32
|
end
|
33
33
|
|
34
|
+
let(:options) do
|
35
|
+
{
|
36
|
+
default_interval: 1.hour,
|
37
|
+
cron_jobs: [
|
38
|
+
"SomeClass.long_method",
|
39
|
+
{ job: "AnotherClass.expensive_method", interval: 1.hour }
|
40
|
+
]
|
41
|
+
}
|
42
|
+
end
|
43
|
+
|
34
44
|
it "sends cron_jobs to schedule" do
|
35
|
-
options = { default_interval: 1.hour, cron_jobs: ["SomeClass.long_method", "AnotherClass.expensive_method"] }
|
36
45
|
options[:cron_jobs].each do |cron_job|
|
37
|
-
|
38
|
-
|
46
|
+
job_is_hash = cron_job.is_a?(Hash)
|
47
|
+
klass, method_name = job_is_hash ? cron_job[:job].split(".") : cron_job.split(".")
|
48
|
+
interval = job_is_hash ? cron_job[:interval] : options[:default_interval]
|
49
|
+
DelayedCron.should_receive(:schedule).with(klass, method_name, { interval: interval })
|
39
50
|
end
|
40
51
|
setup(options)
|
41
52
|
end
|
@@ -120,4 +131,4 @@ describe DelayedCron do
|
|
120
131
|
end
|
121
132
|
end
|
122
133
|
|
123
|
-
end
|
134
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delayed_cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Grubbs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: delayed_job
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
requirements: []
|
184
184
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
185
|
+
rubygems_version: 2.0.6
|
186
186
|
signing_key:
|
187
187
|
specification_version: 4
|
188
188
|
summary: Run your cron jobs with sidekiq, delayed_job, resque, or sucker_punch.
|