lev 8.0.0 → 8.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lev/active_job.rb +2 -49
- data/lib/lev/active_job/base.rb +49 -0
- data/lib/lev/active_job/configured_job.rb +20 -0
- data/lib/lev/routine.rb +5 -1
- data/lib/lev/version.rb +1 -1
- data/spec/active_job_routines_spec.rb +11 -1
- metadata +19 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10396668754e61bf873103c7b939507c6797ada7
|
4
|
+
data.tar.gz: 4c3d23e16f566c7f8f10acc9c2c53f692ddda0b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d44e4de024146fdaae53a3524177d17968836337ba6db82abe53ddcc9a0ec939d89585d902232d410cc123d746a085ac5a144e68aaafb9a53463c405d0279856
|
7
|
+
data.tar.gz: a24eefc3365c7181178b8bd04218335fd2d84f17087a01fd3d825c6b99e6c73e4acfa4c1e70e6cca6842db65fe1310c65608abc3a7a025574ccd5a72a950ba11
|
data/lib/lev/active_job.rb
CHANGED
@@ -1,49 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class Base < Lev.configuration.job_class
|
4
|
-
attr_accessor(:provider_job_id) unless respond_to?(:provider_job_id)
|
5
|
-
|
6
|
-
def self.perform_later(routine_class, *args, &block)
|
7
|
-
# Create a new status object
|
8
|
-
status = Lev::create_status
|
9
|
-
|
10
|
-
# Push the routine class name on to the arguments
|
11
|
-
# so that we can run the correct routine in `perform`
|
12
|
-
args.push(routine_class.to_s)
|
13
|
-
|
14
|
-
# Push the status's ID on to the arguments so that in `perform`
|
15
|
-
# it can be used to retrieve the status when the routine is initialized
|
16
|
-
args.push(status.id)
|
17
|
-
|
18
|
-
# Set the job_name
|
19
|
-
status.set_job_name(routine_class.name)
|
20
|
-
|
21
|
-
# In theory we'd mark as queued right after the call to super, but this messes
|
22
|
-
# up when the activejob adapter runs the job right away (inline mode)
|
23
|
-
status.queued!
|
24
|
-
|
25
|
-
# Queue up the job and set the provider_job_id
|
26
|
-
# For delayed_job, requires either Rails 5 or
|
27
|
-
# http://stackoverflow.com/questions/29855768/rails-4-2-get-delayed-job-id-from-active-job
|
28
|
-
provider_job_id = job_or_instantiate(*args, &block)
|
29
|
-
.enqueue(routine_class.active_job_enqueue_options)
|
30
|
-
.provider_job_id
|
31
|
-
status.set_provider_job_id(provider_job_id) \
|
32
|
-
if provider_job_id.present? && status.respond_to?(:set_provider_job_id)
|
33
|
-
|
34
|
-
# Return the id of the status object
|
35
|
-
status.id
|
36
|
-
end
|
37
|
-
|
38
|
-
def perform(*args, &block)
|
39
|
-
# Pop arguments added by perform_later
|
40
|
-
id = args.pop
|
41
|
-
routine_class = Kernel.const_get(args.pop)
|
42
|
-
|
43
|
-
routine_instance = routine_class.new(Lev::find_status(id))
|
44
|
-
|
45
|
-
routine_instance.call(*args, &block)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
1
|
+
require 'lev/active_job/base'
|
2
|
+
require 'lev/active_job/configured_job'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Lev
|
2
|
+
module ActiveJob
|
3
|
+
class Base < Lev.configuration.job_class
|
4
|
+
attr_accessor(:provider_job_id) unless respond_to?(:provider_job_id)
|
5
|
+
|
6
|
+
def perform_later(routine_class, options, *args, &block)
|
7
|
+
# Create a new status object
|
8
|
+
status = Lev::create_status
|
9
|
+
|
10
|
+
# Push the routine class name on to the arguments
|
11
|
+
# so that we can run the correct routine in `perform`
|
12
|
+
args.push(routine_class.to_s)
|
13
|
+
|
14
|
+
# Push the status's ID on to the arguments so that in `perform`
|
15
|
+
# it can be used to retrieve the status when the routine is initialized
|
16
|
+
args.push(status.id)
|
17
|
+
|
18
|
+
# Set the job_name
|
19
|
+
status.set_job_name(routine_class.name)
|
20
|
+
|
21
|
+
# In theory we'd mark as queued right after the call to super, but this messes
|
22
|
+
# up when the activejob adapter runs the job right away (inline mode)
|
23
|
+
status.queued!
|
24
|
+
|
25
|
+
# Queue up the job and set the provider_job_id
|
26
|
+
# For delayed_job, requires either Rails 5 or
|
27
|
+
# http://stackoverflow.com/questions/29855768/rails-4-2-get-delayed-job-id-from-active-job
|
28
|
+
provider_job_id = self.class.send(:job_or_instantiate, *args, &block)
|
29
|
+
.enqueue(options)
|
30
|
+
.provider_job_id
|
31
|
+
status.set_provider_job_id(provider_job_id) \
|
32
|
+
if provider_job_id.present? && status.respond_to?(:set_provider_job_id)
|
33
|
+
|
34
|
+
# Return the id of the status object
|
35
|
+
status.id
|
36
|
+
end
|
37
|
+
|
38
|
+
def perform(*args, &block)
|
39
|
+
# Pop arguments added by perform_later
|
40
|
+
id = args.pop
|
41
|
+
routine_class = Kernel.const_get(args.pop)
|
42
|
+
|
43
|
+
routine_instance = routine_class.new(Lev::find_status(id))
|
44
|
+
|
45
|
+
routine_instance.call(*args, &block)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Lev
|
2
|
+
module ActiveJob
|
3
|
+
class ConfiguredJob
|
4
|
+
attr_reader :routine_class
|
5
|
+
|
6
|
+
def initialize(routine_class, options)
|
7
|
+
@routine_class = routine_class
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
def options
|
12
|
+
routine_class.active_job_enqueue_options.merge(@options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def perform_later(*args, &block)
|
16
|
+
Lev::ActiveJob::Base.new.perform_later(routine_class, options, *args, &block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/lev/routine.rb
CHANGED
@@ -208,9 +208,13 @@ module Lev
|
|
208
208
|
result.outputs.send(@express_output)
|
209
209
|
end
|
210
210
|
|
211
|
+
def set(options)
|
212
|
+
Lev::ActiveJob::ConfiguredJob.new(self, options)
|
213
|
+
end
|
214
|
+
|
211
215
|
def perform_later(*args, &block)
|
212
216
|
# Delegate to a subclass of Lev::Routine::ActiveJob::Base
|
213
|
-
Lev::ActiveJob::Base.perform_later(self, *args, &block)
|
217
|
+
Lev::ActiveJob::Base.new.perform_later(self, active_job_enqueue_options, *args, &block)
|
214
218
|
end
|
215
219
|
|
216
220
|
def active_job_enqueue_options
|
data/lib/lev/version.rb
CHANGED
@@ -18,7 +18,7 @@ RSpec.describe 'ActiveJob routines' do
|
|
18
18
|
}.to change { ActiveJob::Base.queue_adapter.enqueued_jobs.count }.by(1)
|
19
19
|
end
|
20
20
|
|
21
|
-
it 'can have the default queue overridden' do
|
21
|
+
it 'can have the default queue name overridden in the class definition' do
|
22
22
|
ActiveJob::Base.queue_adapter.enqueued_jobs.clear
|
23
23
|
|
24
24
|
LaterRoutine.perform_later
|
@@ -27,6 +27,16 @@ RSpec.describe 'ActiveJob routines' do
|
|
27
27
|
|
28
28
|
expect(queue_name).to eq('something_else')
|
29
29
|
end
|
30
|
+
|
31
|
+
it 'can have the default queue name overridden using the set method' do
|
32
|
+
ActiveJob::Base.queue_adapter.enqueued_jobs.clear
|
33
|
+
|
34
|
+
LaterRoutine.set(queue: 'whoa').perform_later
|
35
|
+
|
36
|
+
queue_name = ActiveJob::Base.queue_adapter.enqueued_jobs.first[:queue]
|
37
|
+
|
38
|
+
expect(queue_name).to eq('whoa')
|
39
|
+
end
|
30
40
|
end
|
31
41
|
|
32
42
|
context 'exception raised' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JP Slavinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -232,6 +232,8 @@ files:
|
|
232
232
|
- Rakefile
|
233
233
|
- lib/lev.rb
|
234
234
|
- lib/lev/active_job.rb
|
235
|
+
- lib/lev/active_job/base.rb
|
236
|
+
- lib/lev/active_job/configured_job.rb
|
235
237
|
- lib/lev/better_active_model_errors.rb
|
236
238
|
- lib/lev/delegate_to_routine.rb
|
237
239
|
- lib/lev/error.rb
|
@@ -297,23 +299,23 @@ signing_key:
|
|
297
299
|
specification_version: 4
|
298
300
|
summary: Ride the rails but don't touch them.
|
299
301
|
test_files:
|
300
|
-
- spec/active_job_routines_spec.rb
|
301
|
-
- spec/create_sprocket_spec.rb
|
302
|
-
- spec/deep_merge_spec.rb
|
303
|
-
- spec/delegates_to_spec.rb
|
304
|
-
- spec/outputs_spec.rb
|
305
|
-
- spec/paramify_handler_spec.rb
|
306
|
-
- spec/routine_spec.rb
|
307
302
|
- spec/spec_helper.rb
|
303
|
+
- spec/paramify_handler_spec.rb
|
308
304
|
- spec/sprocket_handler_spec.rb
|
309
|
-
- spec/
|
310
|
-
- spec/
|
311
|
-
- spec/
|
312
|
-
- spec/
|
313
|
-
- spec/support/
|
305
|
+
- spec/create_sprocket_spec.rb
|
306
|
+
- spec/delegates_to_spec.rb
|
307
|
+
- spec/transaction_spec.rb
|
308
|
+
- spec/deep_merge_spec.rb
|
309
|
+
- spec/support/paramify_handler_b.rb
|
310
|
+
- spec/support/sprocket_handler.rb
|
314
311
|
- spec/support/jobba.rb
|
315
312
|
- spec/support/paramify_handler_a.rb
|
316
|
-
- spec/support/
|
313
|
+
- spec/support/delegating_routine.rb
|
314
|
+
- spec/support/create_sprocket.rb
|
315
|
+
- spec/support/delegated_routine.rb
|
317
316
|
- spec/support/sprocket.rb
|
318
|
-
- spec/
|
319
|
-
- spec/
|
317
|
+
- spec/sprocket_spec.rb
|
318
|
+
- spec/outputs_spec.rb
|
319
|
+
- spec/routine_spec.rb
|
320
|
+
- spec/active_job_routines_spec.rb
|
321
|
+
- spec/statused_routines_spec.rb
|