good_job 3.15.2 → 3.15.3

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: 4674d611fd466270ee2bb79b4763848bced81ed16ae227dc05e0daca00b5672e
4
- data.tar.gz: 40dda31aa1e21e6b16e4f2582354d572af271ebe270b80e6cbfceec95873f5da
3
+ metadata.gz: 85c6903e5f8838cb72f4687e364fa20cf9c461f0c4b79412bb8b61549bbf6333
4
+ data.tar.gz: d00fecc5a4fe561bc1a7f21a79e46245cb5ab603fafbbb4369344395c9c0fac0
5
5
  SHA512:
6
- metadata.gz: 73ae44f8b88e70d4cfd98473920af572320157432f121b437f99718ca2182fa88d98b7f3dd4a3aec0319b6f2ddd51eb5eed1fe0290f94b605a4b9b7fedf53cc6
7
- data.tar.gz: 932c23ebe5722a3a8d7638db77bfeefd350c219a071b8b96982cd19ad78319c2ddd3f7b178d3ebb59b7d670caf7b265c01b254c2481d13a7a6f0521f0d172c82
6
+ metadata.gz: a1116f1e94e07b62bc316a3ec76a1b0768d22b5a511a65cf18e40bc13d4e8c25290c7c879d5cdfea1f1a988e3809b130462b57bd25a7c2405b0152cbe9434f51
7
+ data.tar.gz: 227c89386f14a783260fff68c55f0f4b0d10db331ab705b922f02fdce79a8ec4cf0f969e554f02e55f030dbcda6efbd9439bcaafd7bc471028c35375a7b58ccf
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [v3.15.3](https://github.com/bensheldon/good_job/tree/v3.15.3) (2023-04-22)
4
+
5
+ [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.2...v3.15.3)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - Eagerly autoload `ActiveJob::Base`; clean up framework deferred-loading logic to use nested `on_load` blocks [\#931](https://github.com/bensheldon/good_job/pull/931) ([bensheldon](https://github.com/bensheldon))
10
+
3
11
  ## [v3.15.2](https://github.com/bensheldon/good_job/tree/v3.15.2) (2023-04-19)
4
12
 
5
13
  [Full Changelog](https://github.com/bensheldon/good_job/compare/v3.15.1...v3.15.2)
@@ -6,40 +6,19 @@ module GoodJob # :nodoc:
6
6
  extend ActiveSupport::Concern
7
7
 
8
8
  included do
9
- # @!attribute [rw] _rails_after_initialize_hook_called
10
- # @!scope class
11
- # Whether Railtie.after_initialize has been called yet (default: +false+).
12
- # This will be set on but before +Rails.application.initialize?+ is +true+.
13
- # @return [Boolean]
14
- mattr_accessor :_rails_after_initialize_hook_called, default: false
15
-
16
- # @!attribute [rw] _active_job_loaded
17
- # @!scope class
18
- # Whether ActiveJob has loaded (default: +false+).
19
- # @return [Boolean]
20
- mattr_accessor :_active_job_loaded, default: false
21
-
22
- # @!attribute [rw] _active_record_loaded
23
- # @!scope class
24
- # Whether ActiveRecord has loaded (default: +false+).
25
- # @return [Boolean]
26
- mattr_accessor :_active_record_loaded, default: false
9
+ mattr_accessor :_framework_ready, default: false
27
10
  end
28
11
 
29
12
  class_methods do
30
- # Whether GoodJob's has been initialized as of the calling of +Railtie.after_initialize+.
31
- # @return [Boolean]
13
+ # Whether Rails framework has sufficiently initialized to enable Async execution.
32
14
  def async_ready?
33
- Rails.application.initialized? || (
34
- _rails_after_initialize_hook_called &&
35
- _active_job_loaded &&
36
- _active_record_loaded
37
- )
15
+ Rails.application.initialized? || _framework_ready
38
16
  end
39
17
 
40
- def start_async_adapters
18
+ def _start_async_adapters
41
19
  return unless async_ready?
42
20
 
21
+ ActiveJob::Base.queue_adapter # Ensure Active Job is initialized
43
22
  GoodJob::Adapter.instances
44
23
  .select(&:execute_async?)
45
24
  .reject(&:async_started?)
@@ -37,26 +37,21 @@ module GoodJob
37
37
 
38
38
  initializer "good_job.start_async" do
39
39
  # This hooks into the hookable places during Rails boot, which is unfortunately not Rails.application.initialized?
40
- # If an Adapter is initialized during boot, we want to want to start its async executors once the framework dependencies have loaded.
40
+ # If an Adapter is initialized during boot, we want to want to start async executors once the framework dependencies have loaded.
41
41
  # When exactly that happens is out of our control because gems or application code may touch things earlier than expected.
42
42
  # For example, as of Rails 6.1, if an ActiveRecord model is touched during boot, that triggers ActiveRecord to load,
43
43
  # which touches DestroyAssociationAsyncJob, which loads ActiveJob, which may initialize a GoodJob::Adapter, all of which
44
44
  # happens _before_ ActiveRecord finishes loading. GoodJob will deadlock if an async executor is started in the middle of
45
45
  # ActiveRecord loading.
46
-
47
46
  config.after_initialize do
48
47
  ActiveSupport.on_load(:active_record) do
49
- GoodJob._active_record_loaded = true
50
- GoodJob.start_async_adapters
51
- end
52
-
53
- ActiveSupport.on_load(:active_job) do
54
- GoodJob._active_job_loaded = true
55
- GoodJob.start_async_adapters
48
+ ActiveSupport.on_load(:active_job) do
49
+ GoodJob._framework_ready = true
50
+ GoodJob._start_async_adapters
51
+ end
52
+ GoodJob._start_async_adapters
56
53
  end
57
-
58
- GoodJob._rails_after_initialize_hook_called = true
59
- GoodJob.start_async_adapters
54
+ GoodJob._start_async_adapters
60
55
  end
61
56
  end
62
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module GoodJob
3
3
  # GoodJob gem version.
4
- VERSION = '3.15.2'
4
+ VERSION = '3.15.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: good_job
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.15.2
4
+ version: 3.15.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Sheldon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-19 00:00:00.000000000 Z
11
+ date: 2023-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activejob
@@ -461,7 +461,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
461
461
  - !ruby/object:Gem::Version
462
462
  version: '0'
463
463
  requirements: []
464
- rubygems_version: 3.4.6
464
+ rubygems_version: 3.4.10
465
465
  signing_key:
466
466
  specification_version: 4
467
467
  summary: A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails