n1_loader 1.6.3 → 1.6.5

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: c874b380de3baf4e2c0631f223261604ecb7108a4320797d746a73a90af01db5
4
- data.tar.gz: c7e98c2c4b07afbb45081b9435f9b544126378f585a23dc7419f320764af0908
3
+ metadata.gz: 3b7ac1fa217041b1142d51fe619c44f6f1cbc16e2d7c2606c5cb4f023f7a19ac
4
+ data.tar.gz: a62833353c2699c369d3581b239f0b8f67b87b6435cc4cba4995661bc83c9174
5
5
  SHA512:
6
- metadata.gz: 071005e2ebc91c4884a2417d02162d795bea99813ea20b556d2b61f18d32e66ae3657f250af84ea67c32433c1d5c6697a2db9a20461d7ac0f73ff86e5b429d94
7
- data.tar.gz: 001e24c4c00ffd207229dd2721baa4424ee90bd7591d9b3ea2092d823e5bec403f51ca80d6efad7b2ff8db3bc57bb955bd04705dd97f704fc64494dffe1f8321
6
+ metadata.gz: c4f17f1bb93729de61ecbd636837323070c65a48f54b4fb6917cf1b24bc5a2b416826498eca11722779aafca09c9f4df150687aed331b6dae2fa9172c024aab4
7
+ data.tar.gz: 102ed2741ad8af210182576df8ceba4293d829b0c4489d6f15a5823dcfe0de976a4ecb604c57fe6383cdf243cc2e4fc510a3f1d8ee1d1e4cfc0c7b5ec0941e65
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [1.6.5] - 2023/07/30
2
+
3
+ - Fix nested preloading for ActiveRecord 7. Thanks [Igor Gonchar](https://github.com/gigorok) for the issue!
4
+
5
+ ## [1.6.4] - 2023/07/30
6
+
7
+ - Add support of `n1_optimized` ending with `?` (question mark). Thanks [Ilya Kamenko](https://github.com/Galathius) for the suggestion!
8
+
1
9
  ## [1.6.3] - 2022/12/30
2
10
 
3
11
  - 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.
@@ -13,3 +13,7 @@ end
13
13
  N1Loader::LoaderCollection.define_method :run? do
14
14
  true
15
15
  end
16
+
17
+ N1Loader::LoaderCollection.define_method :future_classes do
18
+ []
19
+ end
@@ -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,, element.calculate_something) }
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,, element.calculate_something) }
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module N1Loader
4
- VERSION = "1.6.3"
4
+ VERSION = "1.6.5"
5
5
  end
data/lib/n1_loader.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "n1_loader/version"
4
4
 
5
+ require_relative "n1_loader/core/name"
5
6
  require_relative "n1_loader/core/loader"
6
7
  require_relative "n1_loader/core/loader_collection"
7
8
  require_relative "n1_loader/core/loadable"
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.3
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Demin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-12-30 00:00:00.000000000 Z
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