predictive_load 0.3.2 → 0.4.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e90bbf6f94ab919853192241e22b311e67202681
|
4
|
+
data.tar.gz: e7606fd33878084afdcd62ca317d428b62cd5b24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c5344e844ebe9295b7865681dc1d7c91c2331fc180187d1f2a1a4da7da5784010dc2ccb1d565c3f939b6c6683199ee5a1e1591dcd696196ceed2b4829964fcd
|
7
|
+
data.tar.gz: 09d21270213b7c416d7fd8a18ff238ad61d41d1616d2fb1274b22670223d9a7c68da2bb0995375ff45b75e102f9449f50ccc4dd4ae7ebd00e377d177ce966049
|
@@ -12,7 +12,8 @@ module PredictiveLoad::ActiveRecordCollectionObservation
|
|
12
12
|
|
13
13
|
def self.included(base)
|
14
14
|
base.class_attribute :collection_observer
|
15
|
-
base.
|
15
|
+
base.send(:alias_method, :to_a_without_collection_observer, :to_a)
|
16
|
+
base.send(:alias_method, :to_a, :to_a_with_collection_observer)
|
16
17
|
end
|
17
18
|
|
18
19
|
def to_a_with_collection_observer
|
@@ -35,7 +36,7 @@ module PredictiveLoad::ActiveRecordCollectionObservation
|
|
35
36
|
|
36
37
|
# disable eager loading since includes + unscoped is broken on rails 4
|
37
38
|
module UnscopedTracker
|
38
|
-
if ActiveRecord::VERSION::MAJOR
|
39
|
+
if ActiveRecord::VERSION::MAJOR >= 4
|
39
40
|
def unscoped
|
40
41
|
if block_given?
|
41
42
|
begin
|
@@ -58,7 +59,8 @@ module PredictiveLoad::ActiveRecordCollectionObservation
|
|
58
59
|
module AssociationNotification
|
59
60
|
|
60
61
|
def self.included(base)
|
61
|
-
base.
|
62
|
+
base.send(:alias_method, :load_target_without_notification, :load_target)
|
63
|
+
base.send(:alias_method, :load_target, :load_target_with_notification)
|
62
64
|
end
|
63
65
|
|
64
66
|
def load_target_with_notification
|
@@ -80,7 +82,8 @@ module PredictiveLoad::ActiveRecordCollectionObservation
|
|
80
82
|
module CollectionAssociationNotification
|
81
83
|
|
82
84
|
def self.included(base)
|
83
|
-
base.
|
85
|
+
base.send(:alias_method, :load_target_without_notification, :load_target)
|
86
|
+
base.send(:alias_method, :load_target, :load_target_with_notification)
|
84
87
|
end
|
85
88
|
|
86
89
|
def load_target_with_notification
|
@@ -44,7 +44,7 @@ module PredictiveLoad
|
|
44
44
|
protected
|
45
45
|
|
46
46
|
def log_query_plan(association_name)
|
47
|
-
log("detected
|
47
|
+
log("detected n+1 call on #{records.first.class.name}##{association_name}")
|
48
48
|
|
49
49
|
# Detailed logging for first query
|
50
50
|
if query_count(association_name) == 1
|
data/lib/predictive_load.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
module PredictiveLoad
|
2
|
+
|
2
3
|
end
|
3
4
|
|
4
5
|
klasses = [ActiveRecord::Associations::Builder::Association]
|
@@ -9,5 +10,9 @@ if ActiveRecord::VERSION::MAJOR == 3
|
|
9
10
|
end
|
10
11
|
|
11
12
|
klasses.each do |klass|
|
12
|
-
|
13
|
+
if ActiveRecord::VERSION::MAJOR < 5
|
14
|
+
klass.valid_options << :predictive_load
|
15
|
+
else
|
16
|
+
klass::VALID_OPTIONS << :predictive_load
|
17
|
+
end
|
13
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: predictive_load
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Chapweske
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-12 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: 3.2.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: '5.1'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 3.2.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: '5.1'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: minitest
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,6 +128,20 @@ dependencies:
|
|
128
128
|
- - ">="
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '0'
|
131
|
+
- !ruby/object:Gem::Dependency
|
132
|
+
name: byebug
|
133
|
+
requirement: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
type: :development
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
131
145
|
description: Predictive loader
|
132
146
|
email:
|
133
147
|
- eac@zendesk.com
|
@@ -162,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
176
|
version: '0'
|
163
177
|
requirements: []
|
164
178
|
rubyforge_project:
|
165
|
-
rubygems_version: 2.
|
179
|
+
rubygems_version: 2.4.5.1
|
166
180
|
signing_key:
|
167
181
|
specification_version: 4
|
168
182
|
summary: ''
|