【发布时间】:2019-03-27 13:33:00
【问题描述】:
我想从 Rails 应用程序和主机之外的其他地方获取秘密信息。我在config/initializers 下创建了一个全局变量文件来获取密钥。然后将它们设置在数据库连接文件中。像这样:
config/initializers/get_secrets.rb
@@username = 'A'
@@password = 'B'
config/database.yml
development:
adapter: mysql2
encoding: utf8
database: my_db_name
username: <%= @@username %>
password: <%= @@password %>
host: 127.0.0.1
port: 3306
运行rails console时,得到:
./config/initializers/get_secrets.rb:1: warning: class variable access from toplevel
(erb):10: warning: class variable access from toplevel
>
在这种情况下似乎不是一个好的用法。那么有没有正确的方法呢?
【问题讨论】:
-
为什么要全局声明数据库用户名和密码?您应该使用环境变量而不是
ENV[:username], ENV[:password] -
那是特殊需求。不要将这些信息保存在本地。