active_record_shards 5.3.1 → 5.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
  SHA256:
3
- metadata.gz: 032e2279ef2f82d2a1a30a171429a7b34b625766fe3a6060ad21141d551c0ca4
4
- data.tar.gz: 169c3f8e0bf7d4f036a23106d8523b5e09756535f289be4da5ec295ec6c1605d
3
+ metadata.gz: 3d54a5e8446f89d23e9c302763e48033f2398a72495d150772ea4bc3ec4fe575
4
+ data.tar.gz: 9add02d3fec821e54c6f388a021cb09f69320de09846242e49fa2f26269ce948
5
5
  SHA512:
6
- metadata.gz: c35a082c7b33926009467f10871177ecb02a2c5dc3b009a1f5d1a889fb49f039ea88bb931cdd80c7cc67763120158748610925ece6d53ee463020388a4690cc5
7
- data.tar.gz: 4acc42ae93f573d60d12384f6f7454b4a85d1a5a13239491cb6b00a10d722dfb1534026119f845b3f8c39c5e0114500099eac6806cc2c8b6864c7c9f74835fde
6
+ metadata.gz: 27627d24f879c675af2d414c334fd713f9845f2e7d93dd8e6c580194357bba038f5c1ded593be06702a570e7631beeb92e5c2be8e26d8629b5ef84b3333e4b47
7
+ data.tar.gz: d47b1b6906e5ff40633ebe6128fdc845cac7b81d377a16fd31ece96398a174fe87f8bd2a33406abe3516f53969ab5c910e163a792fb0f93e2e6119c8dfc15267
@@ -142,10 +142,6 @@ module ActiveRecordShards
142
142
  end
143
143
 
144
144
  def shard_names
145
- unless config_for_env.fetch(SHARD_NAMES_CONFIG_KEY, []).all? { |shard_name| shard_name.is_a?(Integer) }
146
- raise "All shard names must be integers: #{config_for_env[SHARD_NAMES_CONFIG_KEY].inspect}."
147
- end
148
-
149
145
  config_for_env[SHARD_NAMES_CONFIG_KEY] || []
150
146
  end
151
147
 
@@ -166,11 +162,19 @@ module ActiveRecordShards
166
162
  raise "Did not find #{shard_env} in configurations, did you forget to add it to your database config? (configurations: #{configurations.to_h.keys.inspect})"
167
163
  end
168
164
 
165
+ ensure_all_shard_names_are_integers(config)
166
+
169
167
  config
170
168
  end
171
169
  end
172
170
  alias_method :check_config_for_env, :config_for_env
173
171
 
172
+ def ensure_all_shard_names_are_integers(config)
173
+ unless config.fetch(SHARD_NAMES_CONFIG_KEY, []).all? { |shard_name| shard_name.is_a?(Integer) }
174
+ raise "All shard names must be integers: #{config.inspect}."
175
+ end
176
+ end
177
+
174
178
  def switch_connection(options)
175
179
  ensure_legacy_connection_handling if ActiveRecord.version >= Gem::Version.new('6.1')
176
180
 
@@ -11,17 +11,26 @@ module ActiveRecordShards
11
11
  end
12
12
 
13
13
  def is_sharded? # rubocop:disable Naming/PredicateName
14
- if self == ActiveRecord::Base
15
- sharded != false && supports_sharding?
16
- elsif self == base_class
17
- if sharded.nil?
18
- ActiveRecord::Base.is_sharded?
19
- else
20
- sharded != false
21
- end
22
- else
23
- base_class.is_sharded?
24
- end
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?
19
+
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
25
34
  end
26
35
 
27
36
  def on_replica_by_default?
@@ -18,12 +18,14 @@ module ActiveRecordShards
18
18
  end
19
19
 
20
20
  def self.app_env
21
- env = Rails.env if defined?(Rails.env)
22
- env ||= RAILS_ENV if Object.const_defined?(:RAILS_ENV)
23
- env ||= ENV['RAILS_ENV']
24
- env ||= APP_ENV if Object.const_defined?(:APP_ENV)
25
- env ||= ENV['APP_ENV']
26
- env || 'development'
21
+ @app_env ||= begin
22
+ env = Rails.env if defined?(Rails.env)
23
+ env ||= RAILS_ENV if Object.const_defined?(:RAILS_ENV)
24
+ env ||= ENV['RAILS_ENV']
25
+ env ||= APP_ENV if Object.const_defined?(:APP_ENV)
26
+ env ||= ENV['APP_ENV']
27
+ env || 'development'
28
+ end
27
29
  end
28
30
  end
29
31
 
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.1
4
+ version: 5.3.2
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-02-14 00:00:00.000000000 Z
16
+ date: 2023-04-06 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activerecord