Fix ActiveRecord using two connection pools when no replica is defined (#27061)
parent
e824585523
commit
39da3d86f8
2 changed files with 16 additions and 3 deletions
@ -1,11 +1,24 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
module DatabaseHelper |
||||
def replica_enabled? |
||||
ENV['REPLICA_DB_NAME'] || ENV.fetch('REPLICA_DATABASE_URL', nil) |
||||
end |
||||
module_function :replica_enabled? |
||||
|
||||
def with_read_replica(&block) |
||||
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block) |
||||
if replica_enabled? |
||||
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block) |
||||
else |
||||
yield |
||||
end |
||||
end |
||||
|
||||
def with_primary(&block) |
||||
ApplicationRecord.connected_to(role: :writing, &block) |
||||
if replica_enabled? |
||||
ApplicationRecord.connected_to(role: :writing, &block) |
||||
else |
||||
yield |
||||
end |
||||
end |
||||
end |
||||
|
Loading…
Reference in new issue