M app/helpers/database_helper.rb => app/helpers/database_helper.rb +2 -2
@@ 2,10 2,10 @@
module DatabaseHelper
def with_read_replica(&block)
- ApplicationRecord.connected_to(role: :read, prevent_writes: true, &block)
+ ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
end
def with_primary(&block)
- ApplicationRecord.connected_to(role: :primary, &block)
+ ApplicationRecord.connected_to(role: :writing, &block)
end
end
M app/models/application_record.rb => app/models/application_record.rb +2 -0
@@ 5,6 5,8 @@ class ApplicationRecord < ActiveRecord::Base
include Remotable
+ connects_to database: { writing: :primary, reading: :read }
+
class << self
def update_index(_type_name, *_args, &_block)
super if Chewy.enabled?
M config/database.yml => config/database.yml +30 -12
@@ 8,23 8,41 @@ default: &default
application_name: ''
development:
- <<: *default
- database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
- username: <%= ENV['DB_USER'] %>
- password: <%= (ENV['DB_PASS'] || '').to_json %>
- host: <%= ENV['DB_HOST'] %>
- port: <%= ENV['DB_PORT'] %>
+ primary:
+ <<: *default
+ database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
+ username: <%= ENV['DB_USER'] %>
+ password: <%= (ENV['DB_PASS'] || '').to_json %>
+ host: <%= ENV['DB_HOST'] %>
+ port: <%= ENV['DB_PORT'] %>
+ read:
+ <<: *default
+ database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
+ username: <%= ENV['DB_USER'] %>
+ password: <%= (ENV['DB_PASS'] || '').to_json %>
+ host: <%= ENV['DB_HOST'] %>
+ port: <%= ENV['DB_PORT'] %>
+ replica: true
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
- <<: *default
- database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
- username: <%= ENV['DB_USER'] %>
- password: <%= (ENV['DB_PASS'] || '').to_json %>
- host: <%= ENV['DB_HOST'] %>
- port: <%= ENV['DB_PORT'] %>
+ primary:
+ <<: *default
+ database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
+ username: <%= ENV['DB_USER'] %>
+ password: <%= (ENV['DB_PASS'] || '').to_json %>
+ host: <%= ENV['DB_HOST'] %>
+ port: <%= ENV['DB_PORT'] %>
+ read:
+ <<: *default
+ database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
+ username: <%= ENV['DB_USER'] %>
+ password: <%= (ENV['DB_PASS'] || '').to_json %>
+ host: <%= ENV['DB_HOST'] %>
+ port: <%= ENV['DB_PORT'] %>
+ replica: true
production:
primary: