如何在ruby irb上找到ENV [' RACK_ENV']?

时间:2015-07-25 11:47:19

标签: ruby heroku openshift rack

我的gemfile中有以下行。

if defined? ENV['RACK_ENV'] == 'production' then gem 'pg' else gem 'sqlite3' end

Heroku上,它使用pg宝石,因为它在生产中看到它,在我的计算机上它使用sqlite宝石。但是在Openshift上,它说没有找到pg gem,因此无法运行该应用,所以很明显ENV['RACK_ENV']没有想到#&} 39;生产中,也许是开发中的。

如何在irb,rack或ruby命令行中找到ENV['RACK_ENV']的变量?

1 个答案:

答案 0 :(得分:4)

在Heroku上为您设置了RACK_ENV环境变量,在本地计算机(或显然是Openshift)上不会出现这种情况。在Ruby中,读取一个未设置的环境变量将返回nil

$ export ANY_ENV=foo
$ irb
irb(main):001:0> puts ENV['ANY_ENV']
foo
=> nil
irb(main):002:0> puts ENV['ANOTHER_ENV']

=> nil
irb(main):003:0> ENV['ANOTHER_ENV'].nil?
=> true

在Openshift上,您需要通过RACK_ENV

production设置为rhc env set RACK_ENV=production -a YOUR_APP_NAME

他们提供了三种查看环境变量的方法:

  • 将导出语句添加到App_Name/.openshift/action_hooks/build文件,然后运行git push。这些变量列在Git输出中,并以remote:declare -x开始。
  • 使用SSH访问应用程序并在shell提示符下运行env命令。
  • 使用rhc env list -a <appname> command

有关在Openshift上设置环境变量的更多详细信息,请参阅https://developers.openshift.com/en/managing-environment-variables.html