active_record_shards 5.3.2 → 5.3.3

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