Skip to content

Commit 429befc

Browse files
author
Igor Špánik
committed
Fix compatibility with older active record versions
1 parent 6fbc059 commit 429befc

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

lib/standby/connection_holder.rb

+7-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ class << self
66
# for delayed activation
77
def activate(target)
88
env_name = "#{ActiveRecord::ConnectionHandling::RAILS_ENV.call}_#{target}"
9-
spec = ActiveRecord::Base.configurations.find_db_config(env_name)&.configuration_hash
9+
10+
if ActiveRecord.version >= Gem::Version.new('6.0')
11+
spec = ActiveRecord::Base.configurations.find_db_config(env_name).try(:configuration_hash)
12+
else
13+
spec = ActiveRecord::Base.configurations[env_name]
14+
end
15+
1016
raise Error, "Standby target '#{target}' is invalid!" if spec.nil?
1117

1218
establish_connection spec

spec/configuration_spec.rb

+14-5
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,22 @@
44
before do
55
# Backup connection and configs
66
@backup_conn = Standby.instance_variable_get :@standby_connections
7-
@backup_config = ActiveRecord::Base.configurations.configs_for.map do |config|
8-
[config.env_name, config.configuration_hash]
9-
end.to_h
107
@backup_disabled = Standby.disabled
8+
9+
if ActiveRecord.version >= Gem::Version.new('6.0')
10+
@backup_config = ActiveRecord::Base.configurations.configs_for.map do |config|
11+
[config.env_name, config.configuration_hash]
12+
end.to_h
13+
@empty_config = {}
14+
else
15+
@backup_config = ActiveRecord::Base.configurations.dup
16+
@empty_config = nil
17+
end
18+
1119
@backup_conn.each_key do |klass_name|
1220
Object.send(:remove_const, klass_name) if Object.const_defined?(klass_name)
1321
end
22+
1423
Standby.instance_variable_set :@standby_connections, {}
1524
end
1625

@@ -22,13 +31,13 @@
2231
end
2332

2433
it 'raises error if standby configuration not specified' do
25-
ActiveRecord::Base.configurations = @backup_config.merge({ 'test_standby' => {} })
34+
ActiveRecord::Base.configurations = @backup_config.merge({ 'test_standby' => @empty_config })
2635

2736
expect { Standby.on_standby { User.count } }.to raise_error(Standby::Error)
2837
end
2938

3039
it 'connects to primary if standby configuration is disabled' do
31-
ActiveRecord::Base.configurations = @backup_config.merge({ 'test_standby' => {} })
40+
ActiveRecord::Base.configurations = @backup_config.merge({ 'test_standby' => @empty_config })
3241
Standby.disabled = true
3342

3443
expect(Standby.on_standby { User.count }).to be 2

0 commit comments

Comments
 (0)