Наше приложение развернуто на Heroku с конфигурацией базы данных Unicorn и master-slave со всеми запросами приложений (чтение и запись), идущими на мастер-БД.Лучший способ доступа к базе данных только для чтения в рельсах
Нам необходимо перенаправить часть базы данных read
в подчиненную (подчиненную) базу данных.
Для достижения этой цели, мы добавили read_only_database_connection.rb
-
class ReadOnlyDatabaseConnection < ActiveRecord::Base
self.abstract_class = true
end
и добавил подмешать switch_connection.rb
module SwitchConnection
def readonly_db_connection
current_conf = ReadOnlyDatabaseConnection.connection_config
begin
ReadOnlyDatabaseConnection.establish_connection(READONLY_CONFIG).tap do
puts "Primary DB -> Follower DB"
end
yield
ensure
ReadOnlyDatabaseConnection.establish_connection(current_conf).tap do
puts "Follower DB -> Primary DB"
end
end
end
end
А потом в application_controller.rb
, я -
include SwitchConnection
around_filter :readonly_db_connection, only: [:index, :show]
Является ли это право способ сделать это? Есть ли лучший или более безопасный подход для перенаправления всех и index
трафика на базу данных только для чтения?
проверить это: https://github.com/thiagopradi/octopus –