predictive_load 0.3.1 → 0.3.2

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
  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