active_record_shards 5.3.2 → 5.3.3

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: 3d54a5e8446f89d23e9c302763e48033f2398a72495d150772ea4bc3ec4fe575
4
- data.tar.gz: 9add02d3fec821e54c6f388a021cb09f69320de09846242e49fa2f26269ce948
3
+ metadata.gz: e71e05125d6c15ad696e8243cb09234c09d29e1c381b47adeee2a81b0b79e188
4
+ data.tar.gz: f06e143aabfc0e14d3058e03acc367e54d0219bcbf9355df57ee33e174393dbf
5
5
  SHA512:
6
- metadata.gz: 27627d24f879c675af2d414c334fd713f9845f2e7d93dd8e6c580194357bba038f5c1ded593be06702a570e7631beeb92e5c2be8e26d8629b5ef84b3333e4b47
7
- data.tar.gz: d47b1b6906e5ff40633ebe6128fdc845cac7b81d377a16fd31ece96398a174fe87f8bd2a33406abe3516f53969ab5c910e163a792fb0f93e2e6119c8dfc15267
6
+ metadata.gz: 60629cde5e087c941d9ce3d753a57c5d73f37cbd78d9e7b0f6f1d921834c25267371a0b2e957a92112eac3f295a837a2a41681cda63dc3a6bfd981811dfbcd91
7
+ data.tar.gz: 2c4e012130eead2088089cefb2204508141b3bd5056f733ccd26029fa053ae78b10b077750b64f5b364731b752842210086e368f813b3b1b333e9cdf2fecefb9
@@ -11,26 +11,20 @@ module ActiveRecordShards
11
11
  end
12
12
 
13
13
  def is_sharded? # rubocop:disable Naming/PredicateName
14
- # "sharded" here means self.sharded, but actually writing "self.sharded"
15
- # doesn't work until Ruby 2.7 (and this gem currently supports 2.6) because
16
- # the sharded attr_accessor is private. Private methods must be called without
17
- # a receiver, but Ruby 2.7+ does allow an explicit "self" as a receiver.
18
- return sharded unless sharded.nil?
14
+ return @_ars_model_is_sharded unless @_ars_model_is_sharded.nil?
19
15
 
20
- # Despite self.sharded not working, self.sharded= _DOES_ work. That's an exception
21
- # to the "private methods must be called with no receiver" rule (presumably
22
- # because it would otherwise be ambiguous with local variable assignment).
23
- self.sharded = if self == ActiveRecord::Base
24
- sharded != false && supports_sharding?
25
- elsif self == base_class
26
- if sharded.nil?
27
- ActiveRecord::Base.is_sharded?
28
- else
29
- sharded != false
30
- end
31
- else
32
- base_class.is_sharded?
33
- end
16
+ @_ars_model_is_sharded =
17
+ if self == ActiveRecord::Base
18
+ sharded != false && supports_sharding?
19
+ elsif self == base_class
20
+ if sharded.nil?
21
+ ActiveRecord::Base.is_sharded?
22
+ else
23
+ sharded != false
24
+ end
25
+ else
26
+ base_class.is_sharded?
27
+ end
34
28
  end
35
29
 
36
30
  def on_replica_by_default?
@@ -27,6 +27,17 @@ module ActiveRecordShards
27
27
  env || 'development'
28
28
  end
29
29
  end
30
+
31
+ # Busts internal caches kept by active_record_shards, for things which are _supposed_ to be the
32
+ # same for the life of the process. You shouldn't need to call this unless you're doing something
33
+ # truly evil like changing RAILS_ENV after boot
34
+ def self.reset_app_env!
35
+ @app_env = nil
36
+ models = [ActiveRecord::Base] + ActiveRecord::Base.descendants
37
+ models.each do |model|
38
+ model.remove_instance_variable(:@_ars_model_is_sharded) if model.instance_variable_defined?(:@_ars_model_is_sharded)
39
+ end
40
+ end
30
41
  end
31
42
 
32
43
  ActiveRecord::Base.extend(ActiveRecordShards::ConfigurationParser)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_shards
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.2
4
+ version: 5.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Quorning
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2023-04-06 00:00:00.000000000 Z
16
+ date: 2023-04-28 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord