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

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