active_scheduler 0.2.0 → 0.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 +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:
|