n1_loader 1.6.3 → 1.6.4
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/CHANGELOG.md +4 -0
- data/README.md +6 -0
- data/lib/n1_loader/core/loadable.rb +15 -3
- data/lib/n1_loader/core/name.rb +14 -0
- data/lib/n1_loader/version.rb +1 -1
- data/lib/n1_loader.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dbd6c49bba45473f2a822d02befa1ca0efdc155698648a17640c472ace4fccd
|
4
|
+
data.tar.gz: db6c04d5cc63ddbcc8a3362fba985f478601e2b5ed0f5a298df992ecdc1e8f65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 397c84c6ee33547838c1155c58f7488dfef34028003d7da1c26a6f9a0f2be951bfe4ff4d7df761be6185ec58e36022ead691e434af708fd74ccb2cbae503e459
|
7
|
+
data.tar.gz: 4a554a0f7aa8832b7aa81f32e8b0544baf060c0c8b59538f56e7d579b0e972e680a989ff41c7fe14c01665a7a2f8fb3883ca7ef98d60cc24005a68d3fe67bc6d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## [1.6.4] - 2023/07/30
|
2
|
+
|
3
|
+
- Add support of `n1_optimized` ending with `?` (question mark). Thanks [Ilya Kamenko](https://github.com/Galathius) for the suggestion!
|
4
|
+
|
1
5
|
## [1.6.3] - 2022/12/30
|
2
6
|
|
3
7
|
- Performance optimization: avoid unnecessary calls. Thanks [Nazar Matus](https://github.com/FunkyloverOne) for the [contribution](https://github.com/djezzzl/n1_loader/pull/33).
|
data/README.md
CHANGED
@@ -17,6 +17,12 @@ For example, it can help with resolving N+1 for:
|
|
17
17
|
|
18
18
|
___Support:___ ActiveRecord 5, 6, and 7.
|
19
19
|
|
20
|
+
Follow me and stay tuned for the updates:
|
21
|
+
- [LinkedIn](https://www.linkedin.com/in/evgeniydemin/)
|
22
|
+
- [Medium](https://evgeniydemin.medium.com/)
|
23
|
+
- [Twitter](https://twitter.com/EvgeniyDemin/)
|
24
|
+
- [GitHub](https://github.com/djezzzl)
|
25
|
+
|
20
26
|
## Killer feature for GraphQL API
|
21
27
|
|
22
28
|
N1Loader in combination with [ArLazyPreload][6] is a killer feature for your GraphQL API.
|
@@ -9,7 +9,7 @@ module N1Loader
|
|
9
9
|
# # with inline loader
|
10
10
|
# n1_loader :something do
|
11
11
|
# def perform(elements)
|
12
|
-
# elements.each { |element| fulfill(element
|
12
|
+
# elements.each { |element| fulfill(element, element.calculate_something) }
|
13
13
|
# end
|
14
14
|
# end
|
15
15
|
#
|
@@ -20,15 +20,21 @@ module N1Loader
|
|
20
20
|
# # custom loader
|
21
21
|
# class MyLoader < N1Loader::Loader
|
22
22
|
# def perform(elements)
|
23
|
-
# elements.each { |element| fulfill(element
|
23
|
+
# elements.each { |element| fulfill(element, element.calculate_something) }
|
24
24
|
# end
|
25
25
|
# end
|
26
26
|
module Loadable
|
27
|
+
include Name
|
28
|
+
|
27
29
|
def n1_loader(name)
|
30
|
+
name = n1_loader_name(name)
|
31
|
+
|
28
32
|
send("#{name}_loader")
|
29
33
|
end
|
30
34
|
|
31
35
|
def n1_loader_set(name, loader_collection)
|
36
|
+
name = n1_loader_name(name)
|
37
|
+
|
32
38
|
send("#{name}_loader=", loader_collection)
|
33
39
|
end
|
34
40
|
|
@@ -43,11 +49,17 @@ module N1Loader
|
|
43
49
|
end
|
44
50
|
|
45
51
|
module ClassMethods # :nodoc:
|
52
|
+
include Name
|
53
|
+
|
46
54
|
def n1_loader(name)
|
55
|
+
name = n1_loader_name(name)
|
56
|
+
|
47
57
|
send("#{name}_loader")
|
48
58
|
end
|
49
59
|
|
50
60
|
def n1_loader_defined?(name)
|
61
|
+
name = n1_loader_name(name)
|
62
|
+
|
51
63
|
respond_to?("#{name}_loader")
|
52
64
|
end
|
53
65
|
|
@@ -63,7 +75,7 @@ module N1Loader
|
|
63
75
|
class_eval(&block)
|
64
76
|
end
|
65
77
|
end
|
66
|
-
loader_name = "#{name}_loader"
|
78
|
+
loader_name = "#{n1_loader_name(name)}_loader"
|
67
79
|
loader_variable_name = "@#{loader_name}"
|
68
80
|
|
69
81
|
n1_loaders << name
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module N1Loader
|
4
|
+
# Add support of question mark names
|
5
|
+
module Name
|
6
|
+
def n1_loader_name(name)
|
7
|
+
to_sym = name.is_a?(Symbol)
|
8
|
+
|
9
|
+
converted = name.to_s.gsub("?", "_question_mark")
|
10
|
+
|
11
|
+
to_sym ? converted.to_sym : converted
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/n1_loader/version.rb
CHANGED
data/lib/n1_loader.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: n1_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4
|
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: 2023-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- lib/n1_loader/core/loadable.rb
|
197
197
|
- lib/n1_loader/core/loader.rb
|
198
198
|
- lib/n1_loader/core/loader_collection.rb
|
199
|
+
- lib/n1_loader/core/name.rb
|
199
200
|
- lib/n1_loader/core/preloader.rb
|
200
201
|
- lib/n1_loader/version.rb
|
201
202
|
- n1_loader.gemspec
|