我的 gemfile 中有以下行。
if defined? ENV['RACK_ENV'] == 'production' then gem 'pg' else gem 'sqlite3' end
关于 Heroku它使用 pg
gem,因为它看到它正在生产中,在我的电脑上它使用 sqlite
gem 。然而在Openshift ,它说找不到 pg gem,所以它无法运行应用程序,所以很明显 ENV['RACK_ENV']
不认为它在生产中,而是在开发中。
如何找出 ENV['RACK_ENV']
的变量?在 irb、rack 或 ruby 命令行上?
最佳答案
在 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 访问应用程序并运行
env
在 shell 提示符下执行命令。 - 使用
rhc env list -a <appname> command
参见 https://developers.openshift.com/en/managing-environment-variables.html有关在 Openshift 上设置环境变量的更多详细信息。
关于ruby - 如何在 ruby irb 上找到 ENV ['RACK_ENV' ]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31626146/