我想尝试让我的开发机器与生产服务器(在本例中为heroku)一样靠近。
Heroku允许您定义配置变量,即
config:add key=val
这现在非常安全,因为我的代码中没有存储密钥值。
你知道我如何以及在哪里可以在本地mac机器上为每个应用程序创建这样的环境变量吗。
我已经在谷歌上搜索过了,到目前为止还没有找到一个好的解决方案。有什么想法吗?
提前谢谢。
谢谢Zabba,但我实际上找到了一个很好的方法。
我正在使用POW运行我的本地应用程序,并阅读我发现的文档,您可以通过在我的应用程序的根目录中添加.powenv文件来设置环境变量ie.
export API_KEY='abcdef123456'
然后你可以像正常的一样在你的应用程序中使用,即
api_key = ENV['API_KEY']
非常古怪的东西。
这里有一种方法:
转到http://railswizard.org/并仅将"EnvYAML"添加到模板中。单击finish,然后单击生成的.rb
文件。查看该代码是如何使用文件config/env.yml
来设置ENV变量的。
这是如何做到的,感谢http://railswizard.org/:
在您的应用程序目录中:
附加在config/application.rb
:中
require 'env_yaml'
创建一个名为lib/env_yaml.rb
:的文件
require 'yaml'
begin
env_yaml = YAML.load_file(File.dirname(__FILE__) + '/../config/env.yml')
if env_hash = env_yaml[ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development']
env_hash.each_pair do |k,v|
ENV[k] = v.to_s
end
end
rescue StandardError => e
end
创建一个名为config/env.yml
:的文件
defaults: &defaults
ENV_YAML: true
some_key: value
development:
<<: *defaults
test:
<<: *defaults
production:
<<: *defaults
请注意,ENV不是Hash
,它之所以出现是因为使用了[]
。这就是为什么在lib/env_yaml.rb
中,each
循环在ENV中设置config/env.yml
中每个值的值,因为我们不能将Hash
直接分配给ENV
。
我使用的不是pow,而是rvm和bash。我能够按照这篇Peachbit博客文章中的说明设置环境变量。
和其他答案一样,我不得不将类似export TWILIO_ACCOUNT_SID="XXX"
的命令添加到我的~/.profile文件中。
然后,用访问我代码中的变量
account_sid = ENV["TWILIO_ACCOUNT_SID"]
将环境变量放入.env
文件中,foreman
将自动拾取它们。