Отдельные учетные данные базы данных для каждого демона rails
Я запускаю несколько рабочих процессов, каждый в своем собственном демоне (с rails-daemon
драгоценный камень), каждый из которых должен иметь отдельные роли / привилегии БД (например, один должен иметь возможность только читать таблицу X, другой может писать в X и Y), но кажется, что Rails настроен на чтение учетных данных БД из одного config/database.yml
, Как настроить несколько пользователей БД в рельсах, чтобы каждый работник использовал свои учетные данные?
1 ответ
Вы можете внедрить код ERB в файл database.yml для своих целей, переключаясь между пользователями БД на основе имени работника, поэтому вы меняете пользователей БД на основе текущего работника.
Файл config/database.yml может содержать теги ERB <% =%>. Все в тегах будет оцениваться как код Ruby. Вы можете использовать это для извлечения данных из переменной среды или для выполнения вычислений для генерации необходимой информации о соединении.
Ссылка:
http://edgeguides.rubyonrails.org/configuring.html
Пример:
<%
def get_worker_credential
current_worker = "..." # You need to get the current worker name
case current_worker
when "worker-A"
return { username: "userA", password: "kjahskdjashd" }
when "worker-B"
return { username: "userB", password: "gtrgrttrtn" }
else
return { username: "guest", password: "fsdfdsdfsd" }
end
end
%>
test:
adapter: mysql
database: db
username: <%= get_worker_credential.username %>
password: <%= get_worker_credential.password %>
host: host_site