Использование драгоценных камней ruby parallel и switch_point в приложении Rails:
# maybe helps: explicitly use connection pool
Parallel.each(User.all.each_slice(8).to_a) do |users|
Parallel.each(users, in_threads: 8) do |user|
ActiveRecord::Base.connection_pool.with_connection do
user.update_attribute(:some_attribute, some_value)
end
end
end
Файл конфигурации SwitchPointнапример:
SwitchPoint.configure do |config|
config.define_switch_point :blog_db,
readonly: :"#{Rails.env}_blog_db_slave",
writable: :"#{Rails.env}_blog_db_master"
config.auto_writable = true
end
app / models / application.rb
class Application < ActiveRecord::Base
self.abstract_class = true
use_switch_point :blog_db
end
Иногда появляется такая ошибка:
error: No connection pool with 'SwitchPoint::Proxy::BlogDBReadonly' found.
Понятия не имею, почему.