gitignore vs环境变量Ruby on Rails

时间:2013-04-07 03:03:31

标签: ruby-on-rails environment-variables gitignore

我一直在我的Ruby on Rails应用程序上使用gitignore进行密码/密钥保护,因此我的配置文件不会被提交到Github上并可公开查看。

通过Github Developer的API教程建议使用环境变量来存储它们。如果我没有部署,是否有任何理由我不应该使用gitignore存储我的密钥?

2 个答案:

答案 0 :(得分:1)

没有强烈令人信服的理由更喜欢环境变量而不是文件,但我不确定我是否愿意依赖.gitignore并将文件保留在源代码树中。如果您选择文件,您可能需要考虑将它们移到源树之外以避免任何错误。

如果你已经在过去的任何时候提交了文件(特别是像GitHub这样的公共网站),那么稍后将它们添加到.gitignore并不会删除已提交的先前版本的副本;它们仍然存在于存储库中,有人可以浏览到不被忽略的版本。

此外,根据您运行应用程序的方式,将它们放在与应用程序相同的目录中可能会使您更容易受到基于Web的安全漏洞的攻击。如果将它们保留在应用程序树之外,您可能会从可从应用程序树中读取任意数据的漏洞获得一些有限的保护。我不知道这是一个很大的问题(可以在应用程序树中读取的漏洞也可能在它之外读取),但将它们保存在另一个目录中也没有坏处。

我倾向于更喜欢环境变量,因为它使得部署到Heroku更容易,所以我也在开发中使用它们。我可能会使用一个文件而不是简单的登录/密码对(RSA密钥等),并将其存储在我的主目录或/var/lib/etc/usr/local下的某个位置什么的。

答案 1 :(得分:0)

专门用于解决此类问题的宝石

费加罗:https://github.com/laserlemon/figaro

在一个坚果中,费加罗提供了一种干净简单的方法来配置您的应用并保持私人内容......私密。

您的所有密码,API密钥和任何机密信息都可以保存在本地yml中,不会被推送到远程git仓库。