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 +4 -4
- data/lib/active_record_shards/connection_switcher.rb +8 -4
- data/lib/active_record_shards/model.rb +20 -11
- data/lib/active_record_shards.rb +8 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d54a5e8446f89d23e9c302763e48033f2398a72495d150772ea4bc3ec4fe575
|
4
|
+
data.tar.gz: 9add02d3fec821e54c6f388a021cb09f69320de09846242e49fa2f26269ce948
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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?
|
data/lib/active_record_shards.rb
CHANGED
@@ -18,12 +18,14 @@ module ActiveRecordShards
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.app_env
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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.
|
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-
|
16
|
+
date: 2023-04-06 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: activerecord
|