我想尝试让我的开发机器尽可能接近生产服务器(在本例中为heroku)。
Heroku允许您定义配置变量,即。
config:add key=val
现在这非常安全,因为我的代码中没有存储密钥值。
您知道我在本地mac机器上的每个应用程序如何以及在何处创建此类环境变量。
我已经搜索了这个,但尚未找到一个好的解决方案。有什么想法吗?
提前致谢。
答案 0 :(得分:8)
谢谢Zabba,但实际上我找到了一个很棒的方式。
我正在使用POW来运行我的本地应用并阅读我发现的文档,您可以通过在我的应用根目录中添加.powenv文件来设置环境变量,即
export API_KEY='abcdef123456'
然后,您可以像平常一样在您的应用中使用。
api_key = ENV['API_KEY']
漂亮的kool东西。
答案 1 :(得分:3)
这是一种方式:
转到http://railswizard.org/并仅将“EnvYAML”添加到模板中。单击“完成”,然后单击生成的.rb
文件。了解该代码如何使用文件config/env.yml
设置ENV vars。
在您应用的目录中:
附加在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
}。
答案 2 :(得分:1)
我不是使用pow而是使用rvm和bash。我可以按照this Peachpit blog post的说明设置环境变量。
与其他答案一样,我必须添加export TWILIO_ACCOUNT_SID="XXX"
之类的命令,但我的〜/ .profile文件。
然后,使用以下代码访问我的代码中的变量:
account_sid = ENV["TWILIO_ACCOUNT_SID"]
答案 3 :(得分:0)
将您的环境变量放在.env
文件中,foreman
会自动提取它们。