goldiloader 4.0.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/goldiloader/active_record_patches.rb +2 -0
- data/lib/goldiloader/association_loader.rb +1 -1
- data/lib/goldiloader/auto_include_context.rb +7 -1
- data/lib/goldiloader/compatibility.rb +14 -3
- data/lib/goldiloader/version.rb +1 -1
- data/lib/goldiloader.rb +34 -0
- metadata +32 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60dd6e4947b269049f3a3348487771468d5dd5d9dc3a1029022ddbe88cc8ec37
|
4
|
+
data.tar.gz: 4b064ab04a026f86e68cda4d196b128b175b4fa85ce16c2bcc6026a87f52aa62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7da14e3c1d7c8c2ce7d824bb3af676b7edd0dd5399889242c3cab874d26e957b8d9a3bcd6b2f29a6fb0aa88498d447538e1a5620f691a38b1dfa78b69dd6837a
|
7
|
+
data.tar.gz: a124830cd0f6a34def8d4d59daabce9889d89da6840eeb5adff5b4f6266b159cb2b785c949c31a6f96d407319fdee3b777d96ddaba1b26e04094dc8e843dd642
|
@@ -15,7 +15,7 @@ module Goldiloader
|
|
15
15
|
private
|
16
16
|
|
17
17
|
def eager_load(models, association_name)
|
18
|
-
if Goldiloader::Compatibility.
|
18
|
+
if Goldiloader::Compatibility.pre_rails_7?
|
19
19
|
::ActiveRecord::Associations::Preloader.new.preload(models, [association_name])
|
20
20
|
else
|
21
21
|
::ActiveRecord::Associations::Preloader.new(records: models, associations: [association_name]).call
|
@@ -37,7 +37,13 @@ module Goldiloader
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def register_models(models)
|
40
|
-
Array.wrap(
|
40
|
+
# Don't use Array() or Array.wrap() because they will check respond_to?(:to_ary)
|
41
|
+
# which for ActiveStorage::Attachment will delegate to the blob association which
|
42
|
+
# triggers an infinite eager loading loop on the association
|
43
|
+
models = [models] unless models.is_a?(Array)
|
44
|
+
models.each do |model|
|
45
|
+
next if model.nil?
|
46
|
+
|
41
47
|
model.auto_include_context = self
|
42
48
|
self.models << model
|
43
49
|
end
|
@@ -3,11 +3,22 @@
|
|
3
3
|
module Goldiloader
|
4
4
|
module Compatibility
|
5
5
|
ACTIVE_RECORD_VERSION = ::Gem::Version.new(::ActiveRecord::VERSION::STRING).release
|
6
|
-
PRE_RAILS_6_2 = ACTIVE_RECORD_VERSION < ::Gem::Version.new('6.2.0')
|
7
6
|
RAILS_5_2_0 = ACTIVE_RECORD_VERSION == ::Gem::Version.new('5.2.0')
|
8
7
|
|
9
|
-
def self.
|
10
|
-
|
8
|
+
def self.pre_rails_7?
|
9
|
+
::ActiveRecord::VERSION::MAJOR < 7
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.rails_5_2?
|
13
|
+
::ActiveRecord::VERSION::MAJOR == 5 && ::ActiveRecord::VERSION::MINOR == 2
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.rails_6_1?
|
17
|
+
::ActiveRecord::VERSION::MAJOR == 6 && ::ActiveRecord::VERSION::MINOR == 1
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.rails_6_1_or_greater?
|
21
|
+
::ActiveRecord::VERSION::MAJOR > 6 || rails_6_1?
|
11
22
|
end
|
12
23
|
|
13
24
|
# See https://github.com/rails/rails/pull/32375
|
data/lib/goldiloader/version.rb
CHANGED
data/lib/goldiloader.rb
CHANGED
@@ -8,3 +8,37 @@ require 'goldiloader/scope_info'
|
|
8
8
|
require 'goldiloader/association_options'
|
9
9
|
require 'goldiloader/association_loader'
|
10
10
|
require 'goldiloader/active_record_patches'
|
11
|
+
|
12
|
+
module Goldiloader
|
13
|
+
class << self
|
14
|
+
|
15
|
+
# Sets the process-wide enabled status
|
16
|
+
attr_accessor :globally_enabled
|
17
|
+
|
18
|
+
def enabled?
|
19
|
+
Thread.current.fetch(:goldiloader_enabled, globally_enabled)
|
20
|
+
end
|
21
|
+
|
22
|
+
def enabled=(val)
|
23
|
+
Thread.current[:goldiloader_enabled] = val
|
24
|
+
end
|
25
|
+
|
26
|
+
def enabled
|
27
|
+
old_enabled = Thread.current[:goldiloader_enabled]
|
28
|
+
self.enabled = true
|
29
|
+
yield
|
30
|
+
ensure
|
31
|
+
self.enabled = old_enabled
|
32
|
+
end
|
33
|
+
|
34
|
+
def disabled
|
35
|
+
old_enabled = Thread.current[:goldiloader_enabled]
|
36
|
+
self.enabled = false
|
37
|
+
yield
|
38
|
+
ensure
|
39
|
+
self.enabled = old_enabled
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
self.globally_enabled = true
|
44
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: goldiloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Turkel
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '5.2'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '7.
|
22
|
+
version: '7.2'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '5.2'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '7.
|
32
|
+
version: '7.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: activesupport
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
version: '5.2'
|
40
40
|
- - "<"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '7.
|
42
|
+
version: '7.2'
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -49,7 +49,27 @@ dependencies:
|
|
49
49
|
version: '5.2'
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '7.
|
52
|
+
version: '7.2'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: activestorage
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '5.2'
|
60
|
+
- - "<"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '7.2'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.2'
|
70
|
+
- - "<"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '7.2'
|
53
73
|
- !ruby/object:Gem::Dependency
|
54
74
|
name: appraisal
|
55
75
|
requirement: !ruby/object:Gem::Requirement
|
@@ -228,7 +248,9 @@ metadata:
|
|
228
248
|
changelog_uri: https://github.com/salsify/goldiloader/blob/master/CHANGELOG.md
|
229
249
|
source_code_uri: https://github.com/salsify/goldiloader/
|
230
250
|
bug_tracker_uri: https://github.com/salsify/goldiloader/issues
|
231
|
-
|
251
|
+
allowed_push_host: https://rubygems.org
|
252
|
+
rubygems_mfa_required: 'true'
|
253
|
+
post_install_message:
|
232
254
|
rdoc_options: []
|
233
255
|
require_paths:
|
234
256
|
- lib
|
@@ -243,8 +265,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
265
|
- !ruby/object:Gem::Version
|
244
266
|
version: '0'
|
245
267
|
requirements: []
|
246
|
-
rubygems_version: 3.
|
247
|
-
signing_key:
|
268
|
+
rubygems_version: 3.2.22
|
269
|
+
signing_key:
|
248
270
|
specification_version: 4
|
249
271
|
summary: Automatic Rails association eager loading
|
250
272
|
test_files: []
|