acidic_job 1.0.0.beta.4 → 1.0.0.beta.7

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
  SHA256:
3
- metadata.gz: 9516f1c035c3f7256c178aa23c6966f19420e718f2f0e24d0ec0d751c5e8beb5
4
- data.tar.gz: 0dcf21315d4afefbd1861f69aff453b293818b9166fb58fe36ac45b62266ea13
3
+ metadata.gz: 2ffcde3bd4dedc0b59de934bed0cadeaa63f33fb26f36ddf1678d17e0abbec55
4
+ data.tar.gz: 8fe70548a2e2438e59956a41b2373f294150716a2d5e2de7e84993aeb766a523
5
5
  SHA512:
6
- metadata.gz: 1c742edbc7e301b035276a93ca8d68f1118c6899b024ef7edbf0694790ee6804a18ae7e7d1c2a2d89c40b5e05b966a0bee9114a61aeca0307618c8d0715a047f
7
- data.tar.gz: 5cfda7f2d2cdc602da3bcb6225e8c38647e79b1f1b08e153e4d524594551fc42ce4116240d4837dee59bf17adbf8390e5d0d036120816e0aa379cadb872c787a
6
+ metadata.gz: fcd0acb3acda0eeaaf499a58c165e376739d808d50f074e35f6236f5b0acdb55b34296b95f86a5edabb19b5c6c3e0e24a04e3408e62322052f43f538bcbc2433
7
+ data.tar.gz: 46e5c1560717f18399afad20f568a69b8ee2c66aff02ba03f54d04f74dc2e749ad3aa5e5f73e470e22cb3a0737ac9f394498db558d4d806f7f453fb501b272f9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acidic_job (1.0.0.beta.4)
4
+ acidic_job (1.0.0.beta.7)
5
5
  activejob
6
6
  activerecord
7
7
  activesupport
@@ -15,4 +15,5 @@ module AcidicJob
15
15
  class UnserializableValue < Error; end
16
16
  class LockedIdempotencyKey < Error; end
17
17
  class MismatchedIdempotencyKeyAndJobArguments < Error; end
18
+ class MissingBlockArgument < Error; end
18
19
  end
@@ -81,12 +81,9 @@ module AcidicJob
81
81
  @workflow_builder = WorkflowBuilder.new
82
82
 
83
83
  raise MissingWorkflowBlock, "A block must be passed to `with_acidic_workflow`" unless block_given?
84
+ raise MissingBlockArgument, "An argument must be passed to the `with_acidic_workflow` block" if block.arity.zero?
84
85
 
85
- if block.arity.zero?
86
- @workflow_builder.instance_exec(&block)
87
- else
88
- yield @workflow_builder
89
- end
86
+ block.call @workflow_builder
90
87
 
91
88
  raise NoDefinedSteps if @workflow_builder.steps.empty?
92
89
 
@@ -19,7 +19,7 @@ module AcidicJob
19
19
  if !@run.known_recovery_point?
20
20
  raise UnknownRecoveryPoint,
21
21
  "Defined workflow does not reference this step: #{@run.current_step_name.inspect}"
22
- elsif !Array(awaited_jobs = @run.current_step_hash.fetch("awaits", [])).compact.empty?
22
+ elsif Array(awaited_jobs = jobs_from(@run.current_step_awaits)).compact.any?
23
23
  # We only execute the current step, without progressing to the next step.
24
24
  # This ensures that any failures in parallel jobs will have this step retried in the main workflow
25
25
  step_result = @workflow.execute_current_step
@@ -47,14 +47,12 @@ module AcidicJob
47
47
 
48
48
  private
49
49
 
50
- def enqueue_awaited_jobs(jobs_or_jobs_getter, step_result)
51
- awaited_jobs = jobs_from(jobs_or_jobs_getter)
52
-
50
+ def enqueue_awaited_jobs(awaited_jobs, step_result)
53
51
  AcidicJob.logger.log_run_event("Enqueuing #{awaited_jobs.count} awaited jobs...", @job, @run)
54
52
  # All jobs created in the block are pushed atomically at the end of the block.
55
53
  AcidicJob::Run.transaction do
56
54
  awaited_jobs.each do |awaited_job|
57
- worker_class, args = job_args_and_kwargs(awaited_job)
55
+ worker_class, args = job_and_args(awaited_job)
58
56
 
59
57
  job = worker_class.new(*args)
60
58
 
@@ -69,7 +67,7 @@ module AcidicJob
69
67
  when Array
70
68
  jobs_or_jobs_getter
71
69
  when Symbol, String
72
- if @job.respond_to?(jobs_or_jobs_getter)
70
+ if @job.respond_to?(jobs_or_jobs_getter, _include_private = true)
73
71
  @job.method(jobs_or_jobs_getter).call
74
72
  else
75
73
  raise UnknownAwaitedJob,
@@ -81,7 +79,7 @@ module AcidicJob
81
79
  end
82
80
  end
83
81
 
84
- def job_args_and_kwargs(job)
82
+ def job_and_args(job)
85
83
  case job
86
84
  when Class
87
85
  [job, []]
@@ -173,6 +173,10 @@ module AcidicJob
173
173
  current_step_hash.fetch("then")
174
174
  end
175
175
 
176
+ def current_step_awaits
177
+ current_step_hash.fetch("awaits", []) || []
178
+ end
179
+
176
180
  def next_step_finishes?
177
181
  next_step_name.to_s == FINISHED_RECOVERY_POINT
178
182
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AcidicJob
4
- VERSION = "1.0.0.beta.4"
4
+ VERSION = "1.0.0.beta.7"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acidic_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta.4
4
+ version: 1.0.0.beta.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - fractaledmind
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-09 00:00:00.000000000 Z
11
+ date: 2022-08-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob