【发布时间】:2011-06-05 19:24:00
【问题描述】:
我有一些 Web 服务需要传入安全令牌/密钥/密码。我应该在哪里定义这些安全值以供我的 rails 应用查看?我想要版本控制中的开发密钥,但不想要版本控制中的生产密钥。我应该如何设置?我是 Rails 新手。
【问题讨论】:
我有一些 Web 服务需要传入安全令牌/密钥/密码。我应该在哪里定义这些安全值以供我的 rails 应用查看?我想要版本控制中的开发密钥,但不想要版本控制中的生产密钥。我应该如何设置?我是 Rails 新手。
【问题讨论】:
你正确地看到了这个问题。
将您的passwords 和keys 放入一些排除在版本控制之外的 yml 文件中。
然后在您的生产服务器上,创建完全相同的文件,并在每次部署时将您的应用符号链接到该文件。
编辑。
Capistrano 几乎可以满足这些需求:
将您的yml 文件放入shared 文件夹中
在你的 capistrano deploy.rbfile:
after 'deploy' do
run "ln -s #{shared_path}/database.yml #{release_path}/config/database.yml"
end
使用 yml 文件:http://railscasts.com/episodes/85-yaml-configuration-file
【讨论】:
apneadiving 是对的,对文件进行符号链接是个好主意。另一种方法是将密钥放在 shell 变量中,只有运行应用程序的用户才能访问。然后,在您的 Rails 应用程序中,您将拥有
login = ENV['SERVICE_LOGIN']
password = ENV['SERVICE_PASSWORD']
【讨论】:
从 Rails 4.1.0 开始,请查看 secrets.yml。
【讨论】: