n1_loader 1.7.4 → 2.0.1
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 +4 -4
- data/lib/n1_loader/active_record/{associations_preloader_v7.rb → associations_preloader.rb} +8 -0
- data/lib/n1_loader/active_record.rb +1 -1
- data/lib/n1_loader/ar_lazy_preload/loader_patch.rb +5 -2
- data/lib/n1_loader/core/loader.rb +14 -1
- data/lib/n1_loader/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1ed46e8e8cbb342314dc3b81c510723aa2b010c927077c074ed487db90c762c2
|
|
4
|
+
data.tar.gz: 6a79ef2b754868d40b8afb4b32533613f381df639eafc4b255fb5cf464df30ee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df36fc5c04279a5dd7bba45979a86ae8e8c3775c210a6fef524139ce9460df59c0d8a23533e2825e5bc42db4f129a71d97b345adbc29777afcbc61a06b0ab3a8
|
|
7
|
+
data.tar.gz: 34ea3a6340cbf790da5fe0245939b0d0cd999ef5e656860c222eda1ed64bc068958b7a765b53b6dff25c86d781af5e781c372dcf5755da74e8ad5ebe09dc84f0
|
|
@@ -26,7 +26,7 @@ ActiveSupport.on_load(:active_record) do
|
|
|
26
26
|
require_relative "active_record/associations_preloader_v5"
|
|
27
27
|
ActiveRecord::Associations::Preloader.prepend(N1Loader::ActiveRecord::Associations::Preloader)
|
|
28
28
|
else
|
|
29
|
-
require_relative "active_record/
|
|
29
|
+
require_relative "active_record/associations_preloader"
|
|
30
30
|
ActiveRecord::Associations::Preloader::Branch.prepend(N1Loader::ActiveRecord::Associations::Preloader)
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -7,12 +7,15 @@ module N1Loader
|
|
|
7
7
|
attr_accessor :context_setup
|
|
8
8
|
|
|
9
9
|
def loaded
|
|
10
|
-
return @loaded if @
|
|
10
|
+
return @loaded if @already_loaded && @already_context
|
|
11
11
|
|
|
12
12
|
super
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
synchronize do
|
|
15
|
+
context_setup&.call(@loaded.values.flatten) unless @already_context
|
|
16
|
+
end
|
|
15
17
|
|
|
18
|
+
@already_context = true
|
|
16
19
|
@loaded
|
|
17
20
|
end
|
|
18
21
|
end
|
|
@@ -6,6 +6,8 @@ module N1Loader
|
|
|
6
6
|
# Subclasses must define +perform+ method that accepts single argument
|
|
7
7
|
# and returns hash where key is the element and value is what we want to load.
|
|
8
8
|
class Loader
|
|
9
|
+
prepend MonitorMixin
|
|
10
|
+
|
|
9
11
|
class << self
|
|
10
12
|
attr_reader :arguments
|
|
11
13
|
|
|
@@ -105,7 +107,17 @@ module N1Loader
|
|
|
105
107
|
end
|
|
106
108
|
|
|
107
109
|
def loaded
|
|
108
|
-
return @loaded if @
|
|
110
|
+
return @loaded if @already_loaded
|
|
111
|
+
|
|
112
|
+
synchronize do
|
|
113
|
+
non_thread_safe_loaded unless @already_loaded
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
@loaded
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def non_thread_safe_loaded
|
|
120
|
+
return @loaded if @already_loaded
|
|
109
121
|
|
|
110
122
|
check_arguments!
|
|
111
123
|
|
|
@@ -117,6 +129,7 @@ module N1Loader
|
|
|
117
129
|
perform(elements)
|
|
118
130
|
end
|
|
119
131
|
|
|
132
|
+
@already_loaded = true
|
|
120
133
|
@loaded
|
|
121
134
|
end
|
|
122
135
|
end
|
data/lib/n1_loader/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: n1_loader
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Evgeniy Demin
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-12-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: mutex_m
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: activerecord
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -126,14 +140,14 @@ dependencies:
|
|
|
126
140
|
name: sqlite3
|
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
|
128
142
|
requirements:
|
|
129
|
-
- - "
|
|
143
|
+
- - ">="
|
|
130
144
|
- !ruby/object:Gem::Version
|
|
131
145
|
version: '1.3'
|
|
132
146
|
type: :development
|
|
133
147
|
prerelease: false
|
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
149
|
requirements:
|
|
136
|
-
- - "
|
|
150
|
+
- - ">="
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
152
|
version: '1.3'
|
|
139
153
|
description:
|
|
@@ -145,9 +159,9 @@ extra_rdoc_files: []
|
|
|
145
159
|
files:
|
|
146
160
|
- lib/n1_loader.rb
|
|
147
161
|
- lib/n1_loader/active_record.rb
|
|
162
|
+
- lib/n1_loader/active_record/associations_preloader.rb
|
|
148
163
|
- lib/n1_loader/active_record/associations_preloader_v5.rb
|
|
149
164
|
- lib/n1_loader/active_record/associations_preloader_v6.rb
|
|
150
|
-
- lib/n1_loader/active_record/associations_preloader_v7.rb
|
|
151
165
|
- lib/n1_loader/active_record/base.rb
|
|
152
166
|
- lib/n1_loader/active_record/loader.rb
|
|
153
167
|
- lib/n1_loader/active_record/loader_collection.rb
|
|
@@ -189,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
189
203
|
- !ruby/object:Gem::Version
|
|
190
204
|
version: '0'
|
|
191
205
|
requirements: []
|
|
192
|
-
rubygems_version: 3.
|
|
206
|
+
rubygems_version: 3.2.33
|
|
193
207
|
signing_key:
|
|
194
208
|
specification_version: 4
|
|
195
209
|
summary: Loader to solve N+1 issue for good.
|