Отдельные учетные данные базы данных для каждого демона rails

Я запускаю несколько рабочих процессов, каждый в своем собственном демоне (с драгоценным камнем rails-daemon), каждый из которых должен иметь отдельные роли/привилегии db (например, один должен иметь возможность читать только таблицу X, другой может писать в X и Y), но похоже, что Rails настроен на чтение учетных данных db из одного config/database.yml. Как настроить несколько пользователей базы данных в rails, чтобы каждый рабочий использовал свои собственные учетные данные?


person Jess    schedule 17.01.2018    source источник


Ответы (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
person Shiko    schedule 17.01.2018