我应该在哪里存储特定于我的 ruby 项目中的开发、测试、生产服务器的密钥?例如,应该在哪里存储我的开发特定的 amazon s3 密钥和密钥?我的 config/development.rb 文件?我看到的一个问题是,如果该文件是公共 github 项目的一部分,它将向所有人展示。谢谢!
问问题
1406 次
3 回答
4
您将单独的环境变量分别存储在config/development.rb
,config/testing.rb
和config/production.rb
中。
但是,如果您的文件将存储在公共 git 存储库中,您不希望将任何敏感信息硬编码到其中。最好的方法是使用属于您的一部分的 yaml 文件.gitignore
或在您的 shell 中使用环境变量。我更喜欢后者,像这样:
PAPERCLIP_OPTIONS = { storage: :s3,
bucket: ENV['S3_BUCKET'],
s3_credentials: { access_key_id: ENV['S3_KEY'],
secret_access_key: ENV['S3_SECRET'] }}
然后,您只需在运行应用程序的系统上设置环境变量。
如果您使用 yaml 配置文件方法,则必须将敏感配置文件添加到您的.gitignore
文件中。否则,它们仍将被上传到您的公共仓库。
于 2012-04-27T20:56:39.600 回答
1
如果您查看 config 目录,您将看到一个 YAML 文件,其中包含数据库凭据信息。您可以为您的云环境做同样的事情。
development:
server: xiy-234
username: hello
password: 1325abc
production:
...
于 2012-04-27T20:55:20.010 回答
0
您可以将这些信息放在 config 目录中的 .yml 文件中。
例如:
production:
access_key_id: xxx
secret_access_key: xx
bucket: xxx
development:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
staging:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
完成此操作后,您必须通过执行以下操作将这些密钥存储在哈希中:
APIS_CONFIG = {'amazons3' => YAML.load_file("#{RAILS_ROOT}/config/amazons3.yml")[Rails.env]}
(您可以将前一行代码放在目录.rb
中的文件中config/initializers
)
请注意,您可能会觉得这个Railscast很有趣。
于 2012-04-27T20:57:19.600 回答