我有一个由Heroku托管的Rails 4应用程序。
看到我正在开发一个开源项目,有几个未版本控制的文件包含.gitignore
中列出的敏感信息。例如,我在应用程序的根目录下有一个.secret
文件,其中包含用于加密cookie的密钥。我通过运行rake secret
命令创建了这个文件。
我的问题是我无法将此文件发送到我的heroku应用程序,因为它没有版本化,它不包含在部署中。此外,我正在使用Github,并且无法冒险在提交历史中公开我的密钥。
我试图使用heroku run
命令创建文件(heroku run 'rake secret > .secret'
无效)。我尝试使用heroku run bash
连接终端,但由于文件系统是短暂的,因此当我退出终端时,我的更改不会保留。
您是否知道如何在Heroku应用程序上实现无版本文件?
答案 0 :(得分:2)
秘密数据(密钥,密码等)应存储在Heroku上的配置变量中。然后通过代码中的ENV
哈希访问它们。
如果您使用figaro之类的内容,可以将这些变量放在application.yml中(不要提交文件)
application.yml:
SECRET_KEY: my_secret_key
然后,费加罗有一个rake任务将这些推送到heroku:
rake figaro:heroku
或者,您可以手动设置它们:
heroku config:set SECRET_KEY=my_secret_key
最后,在您的应用中访问它们:
ENV['SECRET_KEY']