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 |
# frozen_string_literal: true |
||||||
|
|
||||||
module DatabaseHelper |
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) |
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 |
end |
||||||
|
|
||||||
def with_primary(&block) |
def with_primary(&block) |
||||||
ApplicationRecord.connected_to(role: :writing, &block) |
if replica_enabled? |
||||||
|
ApplicationRecord.connected_to(role: :writing, &block) |
||||||
|
else |
||||||
|
yield |
||||||
|
end |
||||||
end |
end |
||||||
end |
end |
||||||
|
Loading…
Reference in new issue