我的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']
的变量?
答案 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
开始。env
命令。rhc env list -a <appname> command
有关在Openshift上设置环境变量的更多详细信息,请参阅https://developers.openshift.com/en/managing-environment-variables.html。