You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
514 B
24 lines
514 B
# 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) |
|
if replica_enabled? |
|
ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block) |
|
else |
|
yield |
|
end |
|
end |
|
|
|
def with_primary(&block) |
|
if replica_enabled? |
|
ApplicationRecord.connected_to(role: :writing, &block) |
|
else |
|
yield |
|
end |
|
end |
|
end
|
|
|