acidic_job 1.0.0.beta.6 → 1.0.0.beta.9

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: 15f22e01fee75c9785c6d7ac0ef1f38620cd599bd4f05b372bdda1fa0e6045e5
4
- data.tar.gz: b9cdb3146ed4752b11b5c7aaccfd02f8cb14e37712212796bf14e2a4bdf03ca2
3
+ metadata.gz: 55e96056c881f1a048efc79156db98799bd911ac8417803260499ef1d9f69ff7
4
+ data.tar.gz: 52ae51638b01352db67279455f08b086c2be8c725914fe32c84542d9b5927325
5
5
  SHA512:
6
- metadata.gz: 72a327e00a6e066160d73ffda31321af66e6c20a8b2e446f30869f7e3245ec4db704812f9ceda6a8fb02be9454eaddf503476ebf6614d453df15b4ca8a656e65
7
- data.tar.gz: 420b38dbb39ba3ed89be0c2b8b5c2305f27f6aea8208ee2dfc689ec729329f676ec43b3cb3ac98481c25985eae13eacc64348900f3389b12f74c56d723143d33
6
+ metadata.gz: 4b6a2f319942e8f5973255453608edab836b8e02c421ab3291725b171817f100061319b0fed5af60a706ae8b4eabc15f3b62f146eeff0a97474fa817547a53ff
7
+ data.tar.gz: 6fa11549153a9334089a59534e049e59fba1a5f353069d49ec347238f3e6f26b18b0deb618414e99b33a33400554d05b0ebc29389c12ce1c0e5cb5c727ef90c1
@@ -0,0 +1,13 @@
1
+ # These are supported funding model platforms
2
+
3
+ github: fractaledmind
4
+ patreon: # Replace with a single Patreon username
5
+ open_collective: # Replace with a single Open Collective username
6
+ ko_fi: # Replace with a single Ko-fi username
7
+ tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8
+ community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9
+ liberapay: # Replace with a single Liberapay username
10
+ issuehunt: # Replace with a single IssueHunt username
11
+ otechie: # Replace with a single Otechie username
12
+ lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13
+ custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- acidic_job (1.0.0.beta.6)
4
+ acidic_job (1.0.0.beta.9)
5
5
  activejob
6
6
  activerecord
7
7
  activesupport
@@ -227,7 +227,7 @@ module AcidicJob
227
227
 
228
228
  # "STG__#{idempotency_key}__#{encoded_global_id}"
229
229
  _prefix, _idempotency_key, encoded_global_id = job_id.split("__")
230
- staged_job_gid = "gid://#{::Base64.decode64(encoded_global_id)}"
230
+ staged_job_gid = "gid://#{::Base64.urlsafe_decode64(encoded_global_id)}"
231
231
 
232
232
  @staged_job_run = ::GlobalID::Locator.locate(staged_job_gid)
233
233
  end
@@ -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 (awaited_jobs = jobs_from(@run.current_step_awaits)).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
 
@@ -67,10 +65,11 @@ module AcidicJob
67
65
  def jobs_from(jobs_or_jobs_getter)
68
66
  case jobs_or_jobs_getter
69
67
  when Array
70
- jobs_or_jobs_getter
68
+ jobs_or_jobs_getter.compact
71
69
  when Symbol, String
72
70
  if @job.respond_to?(jobs_or_jobs_getter, _include_private = true)
73
- @job.method(jobs_or_jobs_getter).call
71
+ jobs = @job.method(jobs_or_jobs_getter).call
72
+ Array(jobs).compact
74
73
  else
75
74
  raise UnknownAwaitedJob,
76
75
  "Invalid `awaits`; unknown method `#{jobs_or_jobs_getter}` for this job"
@@ -81,7 +80,7 @@ module AcidicJob
81
80
  end
82
81
  end
83
82
 
84
- def job_args_and_kwargs(job)
83
+ def job_and_args(job)
85
84
  case job
86
85
  when Class
87
86
  [job, []]
@@ -130,7 +130,7 @@ module AcidicJob
130
130
  # encode the identifier for this record in the job ID
131
131
  global_id = to_global_id.to_s.remove("gid://")
132
132
  # base64 encoding for minimal security
133
- encoded_global_id = Base64.encode64(global_id).strip
133
+ encoded_global_id = Base64.urlsafe_encode64(global_id, padding: false)
134
134
 
135
135
  [
136
136
  STAGED_JOB_ID_PREFIX,
@@ -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["awaits"]
178
+ end
179
+
176
180
  def next_step_finishes?
177
181
  next_step_name.to_s == FINISHED_RECOVERY_POINT
178
182
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "./testing"
4
+
5
+ module AcidicJob
6
+ class TestCase < ::ActiveJob::TestCase
7
+ include ::AcidicJob::Testing
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AcidicJob
4
- VERSION = "1.0.0.beta.6"
4
+ VERSION = "1.0.0.beta.9"
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.6
4
+ version: 1.0.0.beta.9
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-10 00:00:00.000000000 Z
11
+ date: 2022-08-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -227,6 +227,7 @@ executables: []
227
227
  extensions: []
228
228
  extra_rdoc_files: []
229
229
  files:
230
+ - ".github/FUNDING.yml"
230
231
  - ".github/workflows/main.yml"
231
232
  - ".gitignore"
232
233
  - ".rubocop.yml"
@@ -271,6 +272,7 @@ files:
271
272
  - lib/acidic_job/serializers/range_serializer.rb
272
273
  - lib/acidic_job/serializers/recovery_point_serializer.rb
273
274
  - lib/acidic_job/serializers/worker_serializer.rb
275
+ - lib/acidic_job/test_case.rb
274
276
  - lib/acidic_job/testing.rb
275
277
  - lib/acidic_job/version.rb
276
278
  - lib/acidic_job/workflow.rb