jit_preloader 3.0.0 → 8.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11ad98c8ab59226bb807d9686a0440140b7ca802d2faf33a0c26c428f2371e7a
4
- data.tar.gz: 0e4832fbea9fc6fafce7445390ef34eed82c3984df471486a7e871db4c6b2717
3
+ metadata.gz: 16275182d701734a61adff78829a23effeff83a02af1a5f225e7d85e7c03a172
4
+ data.tar.gz: b44cbada71a7ed0fbfb3e05eb3fc43206b040dfcbdd0358ae6da101c50881d91
5
5
  SHA512:
6
- metadata.gz: c8932fc1d40b83fd0678ceed57856ab13021e047e9c4ea82b6b42434b98b760f9d51d5b77b232db249573bce512e930e7374b006e09977d9105086a24ff79b1b
7
- data.tar.gz: 9595ae9cddddde356275480f54efe19c3792e93b100abad3ddced491644c06d8dfc197af4651a7be7af9aa1fe4d319fcf8f383e6493f2e7efec245094926e56e
6
+ metadata.gz: f34471c1474522b5cf9fea220e35fb092a078d1e9dff2ea4a056b8d0fb9ca0da55df97b49031f7202de659e01476869260aae4c0acd9e0d83ac3db762958637a
7
+ data.tar.gz: 45cd0fad8395d46db5d2cfef76e724ae5a02e568789ae1457c6897191d5af78d14305f5263a7d48433392a479181952958e4940c862a6b36d4cf5e0052949f0a
@@ -9,12 +9,13 @@ on:
9
9
  jobs:
10
10
  test:
11
11
  runs-on: ubuntu-latest
12
+ timeout-minutes: 5
12
13
  strategy:
13
14
  fail-fast: false
14
15
  matrix:
15
16
  gemfile:
16
17
  - Gemfile
17
- - Gemfile.6.1
18
+ - Gemfile.7.1
18
19
  env:
19
20
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
20
21
  steps:
@@ -22,7 +23,7 @@ jobs:
22
23
  - name: Set up Ruby ${{ matrix.ruby-version }}
23
24
  uses: ruby/setup-ruby@v1
24
25
  with:
25
- ruby-version: 3.1
26
+ ruby-version: 3.4.1
26
27
  - name: Install dependencies
27
28
  run: bundle install
28
29
  - name: Run tests
data/.gitignore CHANGED
@@ -44,9 +44,11 @@ build-iPhoneSimulator/
44
44
 
45
45
  # for a library or gem, you might want to ignore these files since the code is
46
46
  # intended to run in multiple environments; otherwise, check them in:
47
+ Gemfile.7.1.lock
47
48
  Gemfile.lock
48
49
  # .ruby-version
49
50
  # .ruby-gemset
50
51
 
51
52
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
52
53
  .rvmrc
54
+ .ruby-version
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
- gem "activerecord", ">=7"
4
- gem "sqlite3", "~> 1.4"
5
+ gem 'activerecord', '>=8.0.0'
6
+
5
7
  # Specify your gem's dependencies in jit_preloader.gemspec
6
8
  gemspec
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem "activerecord", "~>6.1"
3
+ gem "activerecord", ">=7.1"
4
4
 
5
5
  # Specify your gem's dependencies in jit_preloader.gemspec
6
6
  gemspec
data/README.md CHANGED
@@ -72,6 +72,8 @@ Add this line to your application's Gemfile:
72
72
  gem 'jit_preloader'
73
73
  ```
74
74
 
75
+ As of v8.0 of this gem, it requires Rails 7.1 or higher. If you need to use it with an older version of Rails use v3.1.0.
76
+
75
77
  And then execute:
76
78
 
77
79
  $ bundle
data/Rakefile CHANGED
@@ -1,2 +1,3 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
2
 
3
+ require 'bundler/gem_tasks'
@@ -1,31 +1,35 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'jit_preloader/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "jit_preloader"
8
+ spec.name = 'jit_preloader'
8
9
  spec.version = JitPreloader::VERSION
9
10
  spec.authors = ["Kyle d'Oliveira"]
10
- spec.email = ["kyle.doliveira@clio.com"]
11
- spec.summary = %q{Tool to understand N+1 queries and to remove them}
12
- spec.description = %q{The JitPreloader has the ability to send notifications when N+1 queries occur to help guage how problematic they are for your code base and a way to remove all of the commons explicitly or automatically}
13
- spec.homepage = ""
14
- spec.license = "MIT"
11
+ spec.email = ['kyle.doliveira@clio.com']
12
+ spec.summary = 'Tool to understand N+1 queries and to remove them'
13
+ spec.description = 'The JitPreloader has the ability to send notifications when N+1 queries occur to help guage how problematic they are for your code base and a way to remove all of the commons explicitly or automatically'
14
+ spec.homepage = 'https://github.com/clio/jit_preloader'
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+ spec.metadata['source_code_uri'] = spec.homepage
17
+
18
+ spec.license = 'MIT'
15
19
 
16
20
  spec.files = `git ls-files -z`.split("\x0")
17
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
22
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
23
+ spec.require_paths = ['lib']
20
24
 
21
- spec.add_dependency "activerecord", "< 8"
22
- spec.add_dependency "activesupport"
25
+ spec.add_dependency 'activerecord', '>= 7.1', '< 9'
26
+ spec.add_dependency 'activesupport'
23
27
 
24
- spec.add_development_dependency "bundler"
25
- spec.add_development_dependency "rake", "~> 13.0"
26
- spec.add_development_dependency "rspec"
27
- spec.add_development_dependency "database_cleaner"
28
- spec.add_development_dependency "sqlite3"
29
- spec.add_development_dependency "byebug"
30
- spec.add_development_dependency "db-query-matchers"
28
+ spec.add_development_dependency 'bundler'
29
+ spec.add_development_dependency 'byebug'
30
+ spec.add_development_dependency 'database_cleaner'
31
+ spec.add_development_dependency 'db-query-matchers'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
+ spec.add_development_dependency 'rspec'
34
+ spec.add_development_dependency 'sqlite3'
31
35
  end
@@ -22,6 +22,7 @@ module JitPreloadExtension
22
22
  def preload_scoped_relation(name:, base_association:, preload_scope: nil)
23
23
  return jit_preload_scoped_relations[name] if jit_preload_scoped_relations&.key?(name)
24
24
 
25
+ base_association = base_association.to_sym
25
26
  records = jit_preloader&.records || [self]
26
27
  previous_association_values = {}
27
28
 
@@ -55,6 +56,7 @@ module JitPreloadExtension
55
56
  def preload_scoped_relation(name:, base_association:, preload_scope: nil)
56
57
  return jit_preload_scoped_relations[name] if jit_preload_scoped_relations&.key?(name)
57
58
 
59
+ base_association = base_association.to_sym
58
60
  records = jit_preloader&.records || [self]
59
61
  previous_association_values = {}
60
62
 
@@ -1,3 +1,3 @@
1
1
  module JitPreloader
2
- VERSION = "3.0.0"
2
+ VERSION = "8.0.0"
3
3
  end
@@ -106,5 +106,27 @@ RSpec.describe "ActiveRecord::Base Extensions" do
106
106
  expect(value).to eq([])
107
107
  end
108
108
  end
109
+
110
+ context "when preload_scoped_relation with string base_association name" do
111
+ it "preload properly" do
112
+ contacts = Contact.jit_preload.limit(2).to_a
113
+
114
+ call_with_string = lambda { |contact| contact.preload_scoped_relation(
115
+ name: "American Addresses",
116
+ base_association: "addresses",
117
+ preload_scope: Address.where(country: usa)
118
+ ) }
119
+
120
+ usa_addresses = contacts.first.addresses.where(country: usa).to_a
121
+ expect do
122
+ expect(call_with_string.call(contacts.first)).to match_array usa_addresses
123
+ end.to make_database_queries(count: 1)
124
+
125
+ usa_addresses = contacts.last.addresses.where(country: usa).to_a
126
+ expect do
127
+ expect(call_with_string.call(contacts.last)).to match_array usa_addresses
128
+ end.to_not make_database_queries
129
+ end
130
+ end
109
131
  end
110
132
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jit_preloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle d'Oliveira
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-13 00:00:00.000000000 Z
11
+ date: 2025-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '7.1'
17
20
  - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '8'
22
+ version: '9'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '7.1'
24
30
  - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '8'
32
+ version: '9'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activesupport
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -53,21 +59,21 @@ dependencies:
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
- name: rake
62
+ name: byebug
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - "~>"
65
+ - - ">="
60
66
  - !ruby/object:Gem::Version
61
- version: '13.0'
67
+ version: '0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - "~>"
72
+ - - ">="
67
73
  - !ruby/object:Gem::Version
68
- version: '13.0'
74
+ version: '0'
69
75
  - !ruby/object:Gem::Dependency
70
- name: rspec
76
+ name: database_cleaner
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
79
  - - ">="
@@ -81,7 +87,7 @@ dependencies:
81
87
  - !ruby/object:Gem::Version
82
88
  version: '0'
83
89
  - !ruby/object:Gem::Dependency
84
- name: database_cleaner
90
+ name: db-query-matchers
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
@@ -95,21 +101,21 @@ dependencies:
95
101
  - !ruby/object:Gem::Version
96
102
  version: '0'
97
103
  - !ruby/object:Gem::Dependency
98
- name: sqlite3
104
+ name: rake
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - "~>"
102
108
  - !ruby/object:Gem::Version
103
- version: '0'
109
+ version: '13.0'
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - "~>"
109
115
  - !ruby/object:Gem::Version
110
- version: '0'
116
+ version: '13.0'
111
117
  - !ruby/object:Gem::Dependency
112
- name: byebug
118
+ name: rspec
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
121
  - - ">="
@@ -123,7 +129,7 @@ dependencies:
123
129
  - !ruby/object:Gem::Version
124
130
  version: '0'
125
131
  - !ruby/object:Gem::Dependency
126
- name: db-query-matchers
132
+ name: sqlite3
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
135
  - - ">="
@@ -151,10 +157,7 @@ files:
151
157
  - ".gitignore"
152
158
  - ".rspec"
153
159
  - Gemfile
154
- - Gemfile.6.0
155
- - Gemfile.6.0.lock
156
- - Gemfile.6.1
157
- - Gemfile.6.1.lock
160
+ - Gemfile.7.1
158
161
  - LICENSE
159
162
  - README.md
160
163
  - Rakefile
@@ -176,11 +179,13 @@ files:
176
179
  - spec/spec_helper.rb
177
180
  - spec/support/database.rb
178
181
  - spec/support/models.rb
179
- homepage: ''
182
+ homepage: https://github.com/clio/jit_preloader
180
183
  licenses:
181
184
  - MIT
182
- metadata: {}
183
- post_install_message:
185
+ metadata:
186
+ homepage_uri: https://github.com/clio/jit_preloader
187
+ source_code_uri: https://github.com/clio/jit_preloader
188
+ post_install_message:
184
189
  rdoc_options: []
185
190
  require_paths:
186
191
  - lib
@@ -196,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
201
  version: '0'
197
202
  requirements: []
198
203
  rubygems_version: 3.3.27
199
- signing_key:
204
+ signing_key:
200
205
  specification_version: 4
201
206
  summary: Tool to understand N+1 queries and to remove them
202
207
  test_files:
data/Gemfile.6.0 DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem "activerecord", "~>6.0.0"
4
-
5
- # Specify your gem's dependencies in jit_preloader.gemspec
6
- gemspec
data/Gemfile.6.0.lock DELETED
@@ -1,72 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- jit_preloader (1.0.3)
5
- activerecord (>= 5.2, < 7)
6
- activesupport
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- activemodel (6.0.4.1)
12
- activesupport (= 6.0.4.1)
13
- activerecord (6.0.4.1)
14
- activemodel (= 6.0.4.1)
15
- activesupport (= 6.0.4.1)
16
- activesupport (6.0.4.1)
17
- concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- zeitwerk (~> 2.2, >= 2.2.2)
22
- byebug (11.1.3)
23
- concurrent-ruby (1.1.9)
24
- database_cleaner (2.0.1)
25
- database_cleaner-active_record (~> 2.0.0)
26
- database_cleaner-active_record (2.0.1)
27
- activerecord (>= 5.a)
28
- database_cleaner-core (~> 2.0.0)
29
- database_cleaner-core (2.0.1)
30
- db-query-matchers (0.10.0)
31
- activesupport (>= 4.0, < 7)
32
- rspec (~> 3.0)
33
- diff-lcs (1.4.4)
34
- i18n (1.8.10)
35
- concurrent-ruby (~> 1.0)
36
- minitest (5.14.4)
37
- rake (13.0.6)
38
- rspec (3.10.0)
39
- rspec-core (~> 3.10.0)
40
- rspec-expectations (~> 3.10.0)
41
- rspec-mocks (~> 3.10.0)
42
- rspec-core (3.10.1)
43
- rspec-support (~> 3.10.0)
44
- rspec-expectations (3.10.1)
45
- diff-lcs (>= 1.2.0, < 2.0)
46
- rspec-support (~> 3.10.0)
47
- rspec-mocks (3.10.2)
48
- diff-lcs (>= 1.2.0, < 2.0)
49
- rspec-support (~> 3.10.0)
50
- rspec-support (3.10.2)
51
- sqlite3 (1.4.2)
52
- thread_safe (0.3.6)
53
- tzinfo (1.2.9)
54
- thread_safe (~> 0.1)
55
- zeitwerk (2.4.2)
56
-
57
- PLATFORMS
58
- x86_64-darwin-19
59
-
60
- DEPENDENCIES
61
- activerecord (~> 6.0.0)
62
- bundler
63
- byebug
64
- database_cleaner
65
- db-query-matchers
66
- jit_preloader!
67
- rake (~> 13.0)
68
- rspec
69
- sqlite3
70
-
71
- BUNDLED WITH
72
- 2.2.12
data/Gemfile.6.1.lock DELETED
@@ -1,72 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- jit_preloader (1.0.3)
5
- activerecord (>= 5.2, < 7)
6
- activesupport
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- activemodel (6.1.4.1)
12
- activesupport (= 6.1.4.1)
13
- activerecord (6.1.4.1)
14
- activemodel (= 6.1.4.1)
15
- activesupport (= 6.1.4.1)
16
- activesupport (6.1.4.1)
17
- concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 1.6, < 2)
19
- minitest (>= 5.1)
20
- tzinfo (~> 2.0)
21
- zeitwerk (~> 2.3)
22
- byebug (11.1.3)
23
- concurrent-ruby (1.1.9)
24
- database_cleaner (2.0.1)
25
- database_cleaner-active_record (~> 2.0.0)
26
- database_cleaner-active_record (2.0.1)
27
- activerecord (>= 5.a)
28
- database_cleaner-core (~> 2.0.0)
29
- database_cleaner-core (2.0.1)
30
- db-query-matchers (0.10.0)
31
- activesupport (>= 4.0, < 7)
32
- rspec (~> 3.0)
33
- diff-lcs (1.4.4)
34
- i18n (1.8.10)
35
- concurrent-ruby (~> 1.0)
36
- minitest (5.14.4)
37
- rake (13.0.6)
38
- rspec (3.10.0)
39
- rspec-core (~> 3.10.0)
40
- rspec-expectations (~> 3.10.0)
41
- rspec-mocks (~> 3.10.0)
42
- rspec-core (3.10.1)
43
- rspec-support (~> 3.10.0)
44
- rspec-expectations (3.10.1)
45
- diff-lcs (>= 1.2.0, < 2.0)
46
- rspec-support (~> 3.10.0)
47
- rspec-mocks (3.10.2)
48
- diff-lcs (>= 1.2.0, < 2.0)
49
- rspec-support (~> 3.10.0)
50
- rspec-support (3.10.2)
51
- sqlite3 (1.4.2)
52
- tzinfo (2.0.4)
53
- concurrent-ruby (~> 1.0)
54
- zeitwerk (2.4.2)
55
-
56
- PLATFORMS
57
- ruby
58
- x86_64-darwin-19
59
-
60
- DEPENDENCIES
61
- activerecord (~> 6.1)
62
- bundler
63
- byebug
64
- database_cleaner
65
- db-query-matchers
66
- jit_preloader!
67
- rake (~> 13.0)
68
- rspec
69
- sqlite3
70
-
71
- BUNDLED WITH
72
- 2.2.12