В моем приложении с несколькими арендаторами в рельсах я использую несколько баз данных, и я переключаюсь один на другой с помощью ActiveRecord::Base.establish_connection(tenant_config)
, эта работа прекрасна. Как обрабатывать эти множественные соединения в rufus-scheduler? Нужно ли мне перебирать соединения в каждом планировщике?rufus-scheduler и несколько соединений с базами данных
#not work
scheduler.every '1h' do
MyModel.create(title: "test")
end
может быть, как это:
scheduler.every '1h' do
active_records_all_connections.each do
MyModel.create(title: "test")
end
end
может кто-то помочь мне лучшее решение или посоветуйте. Thx.
Я использую этот код, чтобы управлять своими несколько БД соединений
module DatabaseSwitching
def choose_database_from_tenant(tenant)
unless defined? @@_client_database_details
@@_client_database_details = Hash.new
end
if @@_client_database_details[tenant].nil?
@@_client_database_details[tenant] = fetch_tenant_database_for tenant
end
connect_to_database_for @@_client_database_details[tenant]
end
def fetch_tenant_database_for(tenant)
file_path = "#{Rails.root}/config/databases/database.yml"
raise ActionController::RoutingError.new('Not Found') unless tenant
tenant_db = "database_" + tenant
if @file_to_load != File.ctime(file_path)
@details = YAML.load_file(file_path)[tenant_db]
@file_to_load = File.ctime(file_path)
raise ActionController::RoutingError.new('Not Found') unless @details
end
@details
end
def connect_to_database_for(details)
ActiveRecord::Base.establish_connection(details)
end
end
да, я использую отдельный модуль для управления моих связей – lambi