diff --git a/app/helpers/database_helper.rb b/app/helpers/database_helper.rb index 79227bb1098..62a26a0c2a0 100644 --- a/app/helpers/database_helper.rb +++ b/app/helpers/database_helper.rb @@ -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 diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 567542f91df..014a73997d9 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -5,7 +5,7 @@ class ApplicationRecord < ActiveRecord::Base include Remotable - connects_to database: { writing: :primary, reading: ENV['REPLICA_DB_NAME'] || ENV['REPLICA_DATABASE_URL'] ? :replica : :primary } + connects_to database: { writing: :primary, reading: :replica } if DatabaseHelper.replica_enabled? class << self def update_index(_type_name, *_args, &_block)