predictive_load 0.3.1 → 0.3.2

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: 06c683b9447d34decb31d5c7364b83e05896a0d5
4
- data.tar.gz: 60aabeabaf9889446277fabfb26b581a9a5bba3f
3
+ metadata.gz: 389078c86577ae35abeed91c62774ecf92924a19
4
+ data.tar.gz: 1ba0d8068de6029ecc853ae92b3068f827c6c067
5
5
  SHA512:
6
- metadata.gz: 59b7d697564804716960c66ead83b077c7c07acb3d26b9afa42e6c886a6a13b94e166fc872136625bf3dec869945eff01a9fdec922f52a667294331723cb441b
7
- data.tar.gz: 88d0b749741eca4d134ba75d1797f0c1985de83634c0385ea6558bf9a0528610e845614bedef753edb54a53028aebf68cf6ab15fa7c653698a86630dfbf2735e
6
+ metadata.gz: 019bf857c563d681ac96c34bd97543c08046422ba8941d3441f5093297c13928e258b03194443749d4f6893394d7ab3b58eb1879aa03e6a751d5ab5f22330e5a
7
+ data.tar.gz: 8f6e11a32d2d372a9ce43e12f8f32c0d1d2eba2ac24425fc553905023814c3cb4db5d1f739a3746abe54cdcef5ca760b2cd7a1db3806d4c9cd67a68a42fd9874
@@ -39,10 +39,10 @@ module PredictiveLoad::ActiveRecordCollectionObservation
39
39
  def unscoped
40
40
  if block_given?
41
41
  begin
42
- old, self.predictive_load_disabled = predictive_load_disabled, true
42
+ predictive_load_disabled << self
43
43
  super
44
44
  ensure
45
- self.predictive_load_disabled = old
45
+ predictive_load_disabled.pop
46
46
  end
47
47
  else
48
48
  super
@@ -50,12 +50,8 @@ module PredictiveLoad::ActiveRecordCollectionObservation
50
50
  end
51
51
  end
52
52
 
53
- def predictive_load_disabled=(value)
54
- Thread.current[:predictive_load_disabled] = value
55
- end
56
-
57
53
  def predictive_load_disabled
58
- Thread.current[:predictive_load_disabled]
54
+ Thread.current[:predictive_load_disabled] ||= []
59
55
  end
60
56
  end
61
57
 
@@ -40,11 +40,18 @@ module PredictiveLoad
40
40
  end
41
41
 
42
42
  def supports_preload?(association)
43
- return false if ActiveRecord::Base.predictive_load_disabled
43
+ return false if ActiveRecord::Base.predictive_load_disabled.include?(association.klass)
44
44
  return false if association.reflection.options[:predictive_load] == false
45
45
  return false if association.reflection.options[:conditions].respond_to?(:to_proc) # rails 3 conditions proc (we do not know if it uses instance methods)
46
- if ActiveRecord::VERSION::MAJOR > 3
47
- return false if association.reflection.scope.try(:arity).to_i > 0 # rails 4+ conditions block, if it uses a passed in object, we assume it is not preloadable
46
+ if ActiveRecord::VERSION::MAJOR > 3 && scope = association.reflection.scope
47
+ if scope.is_a?(Proc)
48
+ # rails 4+ conditions block, if it uses a passed in object, we assume it is not preloadable
49
+ return false if scope.arity.to_i > 0
50
+ elsif where = scope.options[:where]
51
+ # ActiveRecord::Associations::Builder::DeprecatedOptionsProc from rails 4.0 and deprecated finders
52
+ # when conditions was a proc the where will be a proc too -> check arity
53
+ return false if where.is_a?(Proc) && where.arity > 0
54
+ end
48
55
  end
49
56
  true
50
57
  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.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Chapweske
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-02 00:00:00.000000000 Z
11
+ date: 2015-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord