0

我在各自的守护进程(使用rails-daemongem)中运行多个工作进程,每个进程都应该具有单独的数据库角色/权限(例如,一个应该只能读取表 X,另一个可以写入 X 和 Y),但是它似乎 Rails 设置为从其中读取 db 凭据config/database.yml。如何在 Rails 中设置配置多个数据库用户,以便每个工作人员使用自己的凭据?

4

1 回答 1

0

您可以将代码 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
于 2018-01-17T03:54:45.773 回答