active_scheduler 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +7 -4
- data/CHANGELOG.markdown +10 -2
- data/Gemfile +5 -1
- data/README.markdown +23 -2
- data/active_scheduler.gemspec +4 -6
- data/lib/active_scheduler.rb +0 -1
- data/lib/active_scheduler/resque_wrapper.rb +12 -2
- data/lib/active_scheduler/version.rb +1 -1
- data/spec/active_scheduler/resque_wrapper_spec.rb +34 -0
- data/spec/fixtures/named_args_job.yaml +9 -0
- metadata +12 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5947ed39877bdeb1e41be0dc069f91cbd42a3d0b
|
4
|
+
data.tar.gz: 738b6e3d63ed6ecb05359ca01491fd0b0785c9e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78e7c5564036a7b8517a801bcf693bb843dbc2304836e2065d20cd8b3a6b992d0b9cac1a665d18a235eee1cd615884726b54d7d7ba103e2c27951213a1c39aae
|
7
|
+
data.tar.gz: b7016a965d05c43aab4f044a23b9ca6369618f45385dde78f8ac83785fd7c64e9e1a90ce822a354b5fc3e3a0dab72eef2988cdf2473bd1d6400d48069705503f
|
data/.travis.yml
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1.9.3
|
4
3
|
- 2.0.0
|
5
4
|
- 2.1.0
|
6
5
|
- 2.1.5
|
7
6
|
- 2.2.0
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
- 2.2.1
|
8
|
+
- 2.2.2
|
9
|
+
- 2.2.3
|
10
|
+
- 2.2.4
|
11
|
+
- 2.2.5
|
12
|
+
- 2.3.0
|
13
|
+
- 2.3.1
|
11
14
|
env:
|
12
15
|
- "RAILS_VERSION=4.2.0"
|
13
16
|
notifications:
|
data/CHANGELOG.markdown
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
+
# 0.3.0
|
2
|
+
|
3
|
+
- :boom: active_support dependency
|
4
|
+
- Updated testing matrix for more rubies 💎💎💎
|
5
|
+
- Support named args [#6](https://github.com/JustinAiken/active_scheduler/pull/6) (Thanks @jdguzman)
|
6
|
+
|
1
7
|
# 0.2.0
|
2
8
|
|
3
|
-
- Deprecate `arguments` in favor of `args` [#5](https://github.com/JustinAiken/active_scheduler/pull/5)
|
9
|
+
- Deprecate `arguments` in favor of `args` [#5](https://github.com/JustinAiken/active_scheduler/pull/5) (Thanks @ximus)
|
4
10
|
|
5
11
|
# 0.1.0
|
6
12
|
|
7
|
-
- Only wrap jobs that are descendants of `ActiveJob::Base` [#3](https://github.com/JustinAiken/active_scheduler/pull/3)
|
13
|
+
- Only wrap jobs that are descendants of `ActiveJob::Base` [#3](https://github.com/JustinAiken/active_scheduler/pull/3) (Thanks @ximus)
|
8
14
|
|
9
15
|
# 0.0.3
|
16
|
+
|
17
|
+
- Use schedule name as class name if unspecified [#1](https://github.com/JustinAiken/active_scheduler/pull/1) (Thanks @jeremycrosbie)
|
data/Gemfile
CHANGED
@@ -4,6 +4,10 @@ rails_version = ENV['RAILS_VERSION'] || '4.2.0'
|
|
4
4
|
rails = "~> #{rails_version}"
|
5
5
|
|
6
6
|
gem "activejob", rails
|
7
|
-
|
7
|
+
|
8
|
+
gem "guard-rspec", '~> 4.2' unless ENV['CI']
|
9
|
+
|
10
|
+
# Randomly grabbed 'tins' version doesn't like ancient rubies
|
11
|
+
gem "tins", '~> 1.6.0' if RUBY_VERSION == '1.9.3'
|
8
12
|
|
9
13
|
gemspec
|
data/README.markdown
CHANGED
@@ -8,9 +8,9 @@ Currently only Resque is supported, but pull requests to add other queues (sidek
|
|
8
8
|
|
9
9
|
## Requirements/Support
|
10
10
|
|
11
|
+
- Ruby 2.0+
|
11
12
|
- Rails
|
12
13
|
- ActiveJob 4.2+
|
13
|
-
- ActiveSupport 4.2+
|
14
14
|
- Resque
|
15
15
|
- Resque Scheduler
|
16
16
|
|
@@ -57,11 +57,32 @@ ThisIsTheClass:
|
|
57
57
|
|
58
58
|
Only classes that are descended from `ActiveJob::Base` will be wrapped
|
59
59
|
|
60
|
+
### Job Classes With Named Args
|
61
|
+
|
62
|
+
If you have a job class that uses named arguments you can specify that. `args`
|
63
|
+
should be a hash nested in the array and you need to add the named_args key.
|
64
|
+
|
65
|
+
```yaml
|
66
|
+
simple_job:
|
67
|
+
every: "30s"
|
68
|
+
queue: "simple"
|
69
|
+
class: "SimpleJob"
|
70
|
+
args:
|
71
|
+
- foo: 1
|
72
|
+
bar: 2
|
73
|
+
description: "It's a simple job."
|
74
|
+
named_args: true
|
75
|
+
```
|
76
|
+
|
60
77
|
## Credits
|
61
78
|
|
62
79
|
- Written by [@JustinAiken](https://www.github.com/JustinAiken)
|
63
80
|
- Wrapper class idea by [@ryanwjackson](https://www.github.com/ryanwjackson)
|
64
|
-
- Special thanks to [Rocketmade](
|
81
|
+
- Special thanks to [Rocketmade](https://www.rocketmade.com/) for development resources.
|
82
|
+
- Other Contributors:
|
83
|
+
- @jeremycrosbie
|
84
|
+
- @ximus
|
85
|
+
- @jdguzman
|
65
86
|
|
66
87
|
## License
|
67
88
|
|
data/active_scheduler.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "active_scheduler"
|
7
7
|
s.version = ActiveScheduler::VERSION
|
8
8
|
s.authors = ["Justin Aiken"]
|
9
|
-
s.email = ["
|
9
|
+
s.email = ["60tonangel@gmail.com"]
|
10
10
|
s.license = 'MIT'
|
11
11
|
s.homepage = "https://github.com/JustinAiken/active_scheduler"
|
12
12
|
s.summary = %q{Scheduling for ActiveJob}
|
@@ -18,10 +18,8 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency '
|
22
|
-
s.add_dependency '
|
23
|
-
|
24
|
-
s.add_development_dependency 'rspec-rails', '~> 3.1'
|
25
|
-
s.add_development_dependency 'guard-rspec', '~> 4.2'
|
21
|
+
s.add_dependency 'rake'
|
22
|
+
s.add_dependency 'activejob', '>= 4.2.0'
|
23
|
+
s.add_development_dependency 'rspec', '~> 3.5'
|
26
24
|
s.add_development_dependency 'coveralls'
|
27
25
|
end
|
data/lib/active_scheduler.rb
CHANGED
@@ -3,9 +3,16 @@ module ActiveScheduler
|
|
3
3
|
|
4
4
|
def self.perform(job_data)
|
5
5
|
klass = Object.const_get job_data['job_class']
|
6
|
+
named_args = job_data.delete('named_args') || false
|
6
7
|
|
7
8
|
if job_data.has_key? 'arguments'
|
8
|
-
|
9
|
+
if named_args
|
10
|
+
args = job_data['arguments'].first.symbolize_keys
|
11
|
+
else
|
12
|
+
args = job_data['arguments']
|
13
|
+
end
|
14
|
+
|
15
|
+
named_args ? klass.perform_later(**args) : klass.perform_later(*args)
|
9
16
|
else
|
10
17
|
klass.perform_later
|
11
18
|
end
|
@@ -21,6 +28,7 @@ module ActiveScheduler
|
|
21
28
|
|
22
29
|
queue = opts[:queue] || 'default'
|
23
30
|
args = opts[:args]
|
31
|
+
named_args = opts[:named_args] || false
|
24
32
|
|
25
33
|
if !args && opts.has_key?(:arguments)
|
26
34
|
warn 'active_scheduler: [DEPRECATION] using the `arguments` key in ' \
|
@@ -35,10 +43,12 @@ module ActiveScheduler
|
|
35
43
|
args: [{
|
36
44
|
job_class: class_name,
|
37
45
|
queue_name: queue,
|
38
|
-
arguments: args
|
46
|
+
arguments: args,
|
39
47
|
}]
|
40
48
|
}
|
41
49
|
|
50
|
+
schedule[job][:args].first.merge!({ named_args: named_args }) if named_args
|
51
|
+
|
42
52
|
schedule[job][:description] = opts.fetch(:description, nil) if opts.fetch(:description, nil)
|
43
53
|
schedule[job][:every] = opts.fetch(:every, nil) if opts.fetch(:every, nil)
|
44
54
|
schedule[job][:cron] = opts.fetch(:cron, nil) if opts.fetch(:cron, nil)
|
@@ -103,6 +103,26 @@ describe ActiveScheduler::ResqueWrapper do
|
|
103
103
|
)
|
104
104
|
end
|
105
105
|
end
|
106
|
+
|
107
|
+
context "when the schedule is for a job with named arguments" do
|
108
|
+
let(:schedule) { YAML.load_file 'spec/fixtures/named_args_job.yaml' }
|
109
|
+
|
110
|
+
it "queues up a job, specifing that there are named args in the job" do
|
111
|
+
stub_jobs("NamedArgsJob")
|
112
|
+
expect(wrapped['named_args_job']).to eq(
|
113
|
+
"class" => "ActiveScheduler::ResqueWrapper",
|
114
|
+
"queue" => "simple",
|
115
|
+
"description" => "It's a named args job.",
|
116
|
+
"every" => "30s",
|
117
|
+
"args" => [{
|
118
|
+
"job_class" => "NamedArgsJob",
|
119
|
+
"queue_name" => "simple",
|
120
|
+
"arguments" => [{'foo' => 1, 'bar' => 2}],
|
121
|
+
"named_args" => true
|
122
|
+
}]
|
123
|
+
)
|
124
|
+
end
|
125
|
+
end
|
106
126
|
end
|
107
127
|
|
108
128
|
describe ".perform" do
|
@@ -124,5 +144,19 @@ describe ActiveScheduler::ResqueWrapper do
|
|
124
144
|
expect(TestKlass).to receive(:perform_later).with 1, 2
|
125
145
|
end
|
126
146
|
end
|
147
|
+
|
148
|
+
context "with named_arguments specified" do
|
149
|
+
let(:job_data) do
|
150
|
+
{
|
151
|
+
'job_class' => 'TestKlass',
|
152
|
+
'arguments' => [{ 'foo' => 1, 'bar' => 2 }],
|
153
|
+
'named_args' => true
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
it "passed the arguments as Named args" do
|
158
|
+
expect(TestKlass).to receive(:perform_later).with(foo: 1, bar: 2)
|
159
|
+
end
|
160
|
+
end
|
127
161
|
end
|
128
162
|
end
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_scheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Aiken
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: activejob
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,33 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 4.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.1'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: guard-rspec
|
42
|
+
name: rspec
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
45
|
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
47
|
+
version: '3.5'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
54
|
+
version: '3.5'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: coveralls
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +68,7 @@ dependencies:
|
|
82
68
|
version: '0'
|
83
69
|
description: A wrapper for scheduling jobs through ActiveJob
|
84
70
|
email:
|
85
|
-
-
|
71
|
+
- 60tonangel@gmail.com
|
86
72
|
executables: []
|
87
73
|
extensions: []
|
88
74
|
extra_rdoc_files: []
|
@@ -102,6 +88,7 @@ files:
|
|
102
88
|
- lib/active_scheduler/version.rb
|
103
89
|
- spec/active_scheduler/resque_wrapper_spec.rb
|
104
90
|
- spec/fixtures/cron_job.yaml
|
91
|
+
- spec/fixtures/named_args_job.yaml
|
105
92
|
- spec/fixtures/no_queue.yaml
|
106
93
|
- spec/fixtures/schedule_name_is_class_name.yaml
|
107
94
|
- spec/fixtures/simple_job.json
|
@@ -128,9 +115,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
115
|
version: '0'
|
129
116
|
requirements: []
|
130
117
|
rubyforge_project: active_scheduler
|
131
|
-
rubygems_version: 2.
|
118
|
+
rubygems_version: 2.6.6
|
132
119
|
signing_key:
|
133
120
|
specification_version: 4
|
134
121
|
summary: Scheduling for ActiveJob
|
135
122
|
test_files: []
|
136
|
-
has_rdoc:
|