Compare commits

...

1 Commits

Author SHA1 Message Date
Eugen Rochko d581b263db Fix not actually connecting to the configured replica 2023-07-13 18:34:57 +02:00
3 changed files with 34 additions and 14 deletions

View File

@ -2,10 +2,10 @@
module DatabaseHelper module DatabaseHelper
def with_read_replica(&block) def with_read_replica(&block)
ApplicationRecord.connected_to(role: :read, prevent_writes: true, &block) ApplicationRecord.connected_to(role: :reading, prevent_writes: true, &block)
end end
def with_primary(&block) def with_primary(&block)
ApplicationRecord.connected_to(role: :primary, &block) ApplicationRecord.connected_to(role: :writing, &block)
end end
end end

View File

@ -5,6 +5,8 @@ class ApplicationRecord < ActiveRecord::Base
include Remotable include Remotable
connects_to database: { writing: :primary, reading: :read }
class << self class << self
def update_index(_type_name, *_args, &_block) def update_index(_type_name, *_args, &_block)
super if Chewy.enabled? super if Chewy.enabled?

View File

@ -8,23 +8,41 @@ default: &default
application_name: '' application_name: ''
development: development:
primary:
<<: *default <<: *default
database: <%= ENV['DB_NAME'] || 'mastodon_development' %> database: <%= ENV['DB_NAME'] || 'mastodon_development' %>
username: <%= ENV['DB_USER'] %> username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %> password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %> host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %> 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 # Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake". # re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production. # Do not set this db to the same as development or production.
test: test:
primary:
<<: *default <<: *default
database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %> database: <%= ENV['DB_NAME'] || 'mastodon' %>_test<%= ENV['TEST_ENV_NUMBER'] %>
username: <%= ENV['DB_USER'] %> username: <%= ENV['DB_USER'] %>
password: <%= (ENV['DB_PASS'] || '').to_json %> password: <%= (ENV['DB_PASS'] || '').to_json %>
host: <%= ENV['DB_HOST'] %> host: <%= ENV['DB_HOST'] %>
port: <%= ENV['DB_PORT'] %> 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: production:
primary: primary: