active_record_shards 5.3.1 → 5.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
  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