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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c723aa094616a7530ea528c8910f5abfe695d91b
4
- data.tar.gz: a8286d5ebc009739893d72912fc3534158161dbe
3
+ metadata.gz: 5947ed39877bdeb1e41be0dc069f91cbd42a3d0b
4
+ data.tar.gz: 738b6e3d63ed6ecb05359ca01491fd0b0785c9e9
5
5
  SHA512:
6
- metadata.gz: 42cc510cc65ff67895469f65ee436024faeaf4b064bf2e18e2264219ba89b55603c6f0f489008838db3e8c6bf107dcbc771d986d0e1599ab4e19b41e751ba4d3
7
- data.tar.gz: 71cba03ce129f5a22a5b948f71a3cc3428d0a09939c0df418c77ce364e43d3251a6f2aae43c3639c1c9a0c38425e6d44ce0e0e7d89c58cbc9d0e46a93b73ba2f
6
+ metadata.gz: 78e7c5564036a7b8517a801bcf693bb843dbc2304836e2065d20cd8b3a6b992d0b9cac1a665d18a235eee1cd615884726b54d7d7ba103e2c27951213a1c39aae
7
+ data.tar.gz: b7016a965d05c43aab4f044a23b9ca6369618f45385dde78f8ac83785fd7c64e9e1a90ce822a354b5fc3e3a0dab72eef2988cdf2473bd1d6400d48069705503f
@@ -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
- matrix:
9
- allow_failures:
10
- - rvm: 1.9.3
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:
@@ -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
- gem "activesupport", rails
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
@@ -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](http://www.rocketmade.com/) for development resources.
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
 
@@ -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 = ["jaiken@rocketmade.com"]
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 'activejob', '>= 4.2.0'
22
- s.add_dependency 'activesupport', '>= 4.2.0'
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
@@ -1,4 +1,3 @@
1
- require 'active_support'
2
1
  require 'active_job'
3
2
  require 'active_scheduler/version'
4
3
  require 'active_scheduler/resque_wrapper'
@@ -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
- klass.perform_later *job_data['arguments']
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)
@@ -1,3 +1,3 @@
1
1
  module ActiveScheduler
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -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
@@ -0,0 +1,9 @@
1
+ named_args_job:
2
+ every: "30s"
3
+ queue: "simple"
4
+ class: "NamedArgsJob"
5
+ args:
6
+ - foo: 1
7
+ bar: 2
8
+ description: "It's a named args job."
9
+ named_args: true
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.2.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-04-08 00:00:00.000000000 Z
11
+ date: 2016-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activejob
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.0
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: 4.2.0
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: activesupport
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-rails
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: '4.2'
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: '4.2'
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
- - jaiken@rocketmade.com
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.4.8
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: