Ruby在mac上设置ENV变量

时间:2011-05-29 22:18:46

标签: ruby-on-rails ruby-on-rails-3 macos

我想尝试让我的开发机器尽可能接近生产服务器(在本例中为heroku)。

Heroku允许您定义配置变量,即。

config:add key=val

现在这非常安全,因为我的代码中没有存储密钥值。

您知道我在本地mac机器上的每个应用程序如何以及在何处创建此类环境变量。

我已经搜索了这个,但尚未找到一个好的解决方案。有什么想法吗?

提前致谢。

4 个答案:

答案 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。

感谢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 }。

答案 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会自动提取它们。