我有一些Web服务要求传入安全的令牌/密钥/密码。我应该在哪里为rails应用程序定义这些安全值?我想在版本控制中使用开发键,但不希望生产密钥在版本控制中。我该如何设置?我是铁杆新手。
答案 0 :(得分:4)
你能正确看待问题。
将passwords
和keys
放在版本控制中排除的某个yml文件中。
然后在您的生产服务器上,每次部署时都要创建相同的文件并将应用程序符号链接到它。
EDIT。
Capistrano几乎可以满足这些需求:
将yml
个文件放入shared
文件夹
在你的capistrano deploy.rb
档案中:
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
答案 1 :(得分:4)
apneadiving是正确的,符号化文件是个好主意。另一种方法是将密钥放在shell变量中,只能由运行应用程序的用户访问。然后,在您的rails应用程序中,您将拥有
login = ENV['SERVICE_LOGIN']
password = ENV['SERVICE_PASSWORD']
答案 2 :(得分:0)
从Rails 4.1.0开始,请查看secrets.yml。