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 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: