目前,我将用于访问环境.rb文件中的其他API等的密钥。这样,当我在本地运行时,以及在heroku上都可以使用它。
但是,我想开始通过github公开我的代码,这样我就可以得到一些帮助。
为实现这一目标,我需要采取哪些步骤,尤其是我可以在本地进行测试并在heroku上进行测试。
似乎在heroku上有一种方法可以从命令行添加密钥,因此它们不需要驻留在ruby-on-rails应用程序中。但是对于地方发展呢?
答案 0 :(得分:16)
您可以使用环境变量(heroku上的config vars)来存储您的API密钥,而不是将它们检查到源代码中。
对于我正在处理的project,我使用twitter-auth的分支,并将其更改为从env变量中读取客户端密钥和密钥:
OAuth::Consumer.new(
ENV['oauth_consumer_key'] || config['oauth_consumer_key'],
ENV['oauth_consumer_secret'] || config['oauth_consumer_secret'],
options
)
然后我在项目目录中的.rvmrc
中设置密钥以供本地使用:
export oauth_consumer_key=xxxxxxxxxxxx
export oauth_consumer_secret=xxxxxxxxxxxxxxxxxxx
rvm ree@redactify
最后在heroku上设置环境变量:
$ heroku config:add oauth_consumer_key=xxxxxxxxxxxxx
$ heroku config:add oauth_consumer_secret=xxxxxxxxxxxxx
$ heroku config
DATABASE_URL => postgres://.....
RACK_ENV => production
oauth_consumer_key => xxxxxxxxxxxxxxxx
oauth_consumer_secret => xxxxxxxxxxxxxxxxxxx
然后确保.rvmrc
位于.gitignore
,然后您可以推送到github而不会暴露任何API密钥。
答案 1 :(得分:4)
将它们移动到初始化程序并将文件添加到.gitignore
编辑:
config中有一个名为initializers的目录。这是您放置应用程序启动时应运行一次的代码的位置。在过去,environment.rb用于这些设置,但初始化程序使事情更好地组织。我会在initializers目录中创建一个名为“load_keys.rb”的文件或类似的东西。在这个文件中,您可以在github中放置您不想要的environment.rb文件中的确切代码。
答案 2 :(得分:1)
eval $(keychain private-key-file1 private-key-file2 private-key-file3; source ~/.keychain/${HOSTNAME}-sh)
添加到〜/ .bashrc,〜/ .profile,〜/ .bash_profile或者你有什么。 (请参阅csh,tcsh,zsh或其他任何内容的keychain手册页)