Ruby在mac上设置ENV变量



我想尝试让我的开发机器与生产服务器(在本例中为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将自动拾取它们。

相关内容

  • 没有找到相关文章

最新更新