diff --git a/app/models/application_record.rb b/app/models/application_record.rb index adebaf03b..e2eb5b9bd 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -2,7 +2,7 @@ class ApplicationRecord < ActiveRecord::Base include Events::Types self.abstract_class = true - connects_to database: { writing: :primary, reading: :primary_replica } + # connects_to database: { writing: :primary, reading: :primary_replica } before_validation :validates_column_content_length diff --git a/config/initializers/database_fallback.rb b/config/initializers/database_fallback.rb new file mode 100644 index 000000000..624f98ab8 --- /dev/null +++ b/config/initializers/database_fallback.rb @@ -0,0 +1,15 @@ +require 'active_record' + +replica_available = ActiveRecord::Base.connection_pool.with_connection do |conn| + conn.execute('SELECT 1 FROM primary_replica LIMIT 1') + true +rescue StandardError + false +end + +Rails.application.config.to_prepare do + ApplicationRecord.connects_to database: { + writing: :primary, + reading: replica_available ? :primary_replica : :primary + } +end