marj 6.0.0 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -13
  3. data/lib/marj.rb +1 -1
  4. data/lib/marj_adapter.rb +6 -0
  5. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d0039931eb3f0bd43ce090b0b581d6544b26fda022729f6371f4c8ac393076e
4
- data.tar.gz: 6abb66afe0bc56064be4ecee3f3e59e78adcf10afb83654529387b785f817335
3
+ metadata.gz: 1fd27db3bb7a04aee0b4e6cf043e35bde5329143194584bcb03b75ef00896f5d
4
+ data.tar.gz: d89fd27053c6beeb6aeddcaac59fd1a0ddd4b2a481a4dd0f9b96b3cbbbc29bde
5
5
  SHA512:
6
- metadata.gz: ec25e50e772072eb6d13ebcb04a67e8ee4602782b62edab07e9521817993f6d92bac376bff90a6aeca1c724fa61dc4ba04ac1fe8ce9659139d2dcd98c397bce4
7
- data.tar.gz: f78b5ba741202818a5374c95fddcb6258b091d4feba4b2de1d1f9de8d1422b99348bf5e354619d215b32b9b7f8d4055ef95d271055cf489e4049b06b40d3463c
6
+ metadata.gz: 5b1304cba5e2780fa9fd24432624e37a0a1746efefa9ffaf11573875a2333b1ae9fda8f419b94f30f953c59be0896dae6b90e808b089bbac2324cbe787d2ed8d
7
+ data.tar.gz: c9b6926e5ef0cad9fc33d510eb9102d570e4ace04322cfc62c44367651a42034c7be5f2dbbf88fc851c13fc6acfc005056d342676bcd505f356696b8fa0305c1
data/README.md CHANGED
@@ -4,7 +4,7 @@ A minimal database-backed ActiveJob queueing backend.
4
4
 
5
5
  ## Quick Links
6
6
 
7
- API docs: https://gemdocs.org/gems/marj/6.0.0/ <br>
7
+ API docs: https://gemdocs.org/gems/marj/6.1.0/ <br>
8
8
  RubyGems: https://rubygems.org/gems/marj <br>
9
9
  Changelog: https://github.com/nicholasdower/marj/releases <br>
10
10
  Issues: https://github.com/nicholasdower/marj/issues <br>
@@ -61,7 +61,7 @@ Marj relies on existing ActiveJob APIs, for example:
61
61
 
62
62
  ```ruby
63
63
  job.enqueue # Enqueues a job
64
- job.perform_now # Performs a job
64
+ job.perform_now # Executes a job
65
65
  ```
66
66
 
67
67
  Additionally, it extends the ActiveJob API with methods required for a
@@ -104,6 +104,8 @@ class CreateJobs < ActiveRecord::Migration[7.1]
104
104
  table.string :timezone, null: false
105
105
  end
106
106
 
107
+ add_index :jobs, %i[job_class]
108
+ add_index :jobs, %i[queue_name]
107
109
  add_index :jobs, %i[enqueued_at]
108
110
  add_index :jobs, %i[scheduled_at]
109
111
  add_index :jobs, %i[priority scheduled_at enqueued_at]
@@ -161,25 +163,25 @@ end
161
163
  job = SomeJob.perform_later('foo')
162
164
 
163
165
  # Query jobs
164
- SomeJob.query(:all)
165
- SomeJob.query(:due)
166
- SomeJob.query(:due, queue: :foo)
167
- SomeJob.query('8720417d-8fff-4fcf-bc16-22aaef8543d2')
166
+ Marj.query(:all)
167
+ Marj.query(:due)
168
+ Marj.query(:due, queue: :foo)
169
+ Marj.query('8720417d-8fff-4fcf-bc16-22aaef8543d2')
168
170
 
169
171
  # Execute a job
170
172
  job.perform_now
171
173
 
172
174
  # Execute jobs which are due (single query)
173
- SomeJob.query(:due).map(&:perform_now)
175
+ Marj.query(:due).map(&:perform_now)
174
176
 
175
177
  # Execute jobs which are due (multiple queries)
176
- loop {
177
- SomeJob.query(:due, :first)&.tap(&:perform_now) || break
178
+ loop do
179
+ Marj.query(:due, :first)&.tap(&:perform_now) || break
178
180
  end
179
181
 
180
182
  # Execute jobs as they become due
181
183
  loop do
182
- SomeJob.query(:due).each(&:perform_now) rescue logger.error($!)
184
+ Marj.query(:due).each(&:perform_now) rescue logger.error($!)
183
185
  ensure
184
186
  sleep 5.seconds
185
187
  end
@@ -457,7 +459,7 @@ job = SomeJob.new.deserialize(other_job.serialize)
457
459
  job = SomeJob.perform_later
458
460
  job = SomeJob.perform_later(args)
459
461
 
460
- # Create without enqueueing and run (only enqueued on failure if retryable)
462
+ # Create without enqueueing and run (only enqueued on retryable failure)
461
463
  SomeJob.perform_now
462
464
  SomeJob.perform_now(args)
463
465
  ```
@@ -478,7 +480,7 @@ SomeJob.perform_later(SomeJob.new(args))
478
480
  SomeJob.perform_later(args)
479
481
  SomeJob.set(options).perform_later(args)
480
482
 
481
- # After a failure during execution
483
+ # After a retryable execution failure
482
484
  SomeJob.perform_now(args)
483
485
  ActiveJob::Base.execute(SomeJob.new(args).serialize)
484
486
 
@@ -492,7 +494,7 @@ SomeJob.set(options).perform_all_later(SomeJob.new, SomeJob.new, options:)
492
494
  ### Executing Jobs
493
495
 
494
496
  ```ruby
495
- # Executed without enqueueing, enqueued on failure if retryable
497
+ # Executed without enqueueing, enqueued on retryable failure
496
498
  SomeJob.new(args).perform_now
497
499
  SomeJob.perform_now(args)
498
500
  ActiveJob::Base.execute(SomeJob.new(args).serialize)
data/lib/marj.rb CHANGED
@@ -34,7 +34,7 @@ require_relative 'marj_adapter'
34
34
  # See https://github.com/nicholasdower/marj
35
35
  module Marj
36
36
  # The Marj version.
37
- VERSION = '6.0.0'
37
+ VERSION = '6.1.0'
38
38
 
39
39
  Kernel.autoload(:Record, File.expand_path(File.join('marj', 'record.rb'), __dir__))
40
40
 
data/lib/marj_adapter.rb CHANGED
@@ -24,6 +24,12 @@ class MarjAdapter
24
24
  @discard_proc = discard
25
25
  end
26
26
 
27
+ # Returns whether jobs enqueued during a transaction should actually be enqueued only after the
28
+ # transaction is committed.
29
+ def enqueue_after_transaction_commit?
30
+ false
31
+ end
32
+
27
33
  # Enqueue a job for immediate execution.
28
34
  #
29
35
  # @param job [ActiveJob::Base] the job to enqueue
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marj
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0
4
+ version: 6.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Dower
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-05 00:00:00.000000000 Z
11
+ date: 2024-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -56,8 +56,8 @@ licenses:
56
56
  - MIT
57
57
  metadata:
58
58
  bug_tracker_uri: https://github.com/nicholasdower/marj/issues
59
- changelog_uri: https://github.com/nicholasdower/marj/releases/tag/v6.0.0
60
- documentation_uri: https://www.rubydoc.info/github/nicholasdower/marj/v6.0.0
59
+ changelog_uri: https://github.com/nicholasdower/marj/releases/tag/v6.1.0
60
+ documentation_uri: https://www.rubydoc.info/github/nicholasdower/marj/v6.1.0
61
61
  homepage_uri: https://github.com/nicholasdower/marj
62
62
  rubygems_mfa_required: 'true'
63
63
  source_code_uri: https://github.com/nicholasdower/marj