good_job 3.15.2 → 3.15.3

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