RACK_ENV在Rails应用程序中做了什么?

时间:2014-10-15 11:10:10

标签: ruby-on-rails ruby rack

我已经在生产中使用Rails应用程序了。在设置这些环境变量之前的那个人:

...
export RACK_ENV=none                                                                                                                  
export RAILS_ENV=production
...

RACK_ENV=none做什么?我无法在任何地方找到相关文档。我是否需要在Rails应用程序中设置它,还是可以删除该导出?

2 个答案:

答案 0 :(得分:4)

恕我直言,这没用。

要查找当前环境,Rails应用程序首先查找RAILS_ENV环境变量,然后查找RACK_ENV环境变量,然后默认为'development'

答案 1 :(得分:1)

如果您正在使用版本1.7或更高版本的database_cleaner gem,并且您的CI服务器RACK_ENV设置为production,就像我的那样,您需要将RACK_ENV设置为none(或除production之外的任何其他内容)以安抚database_cleaner保护您的测试未在生产中运行的安全措施。 (或者你可以完全禁用安全措施,但这似乎不太安全。)

查看当前的机架来源,似乎RACK_ENV对于机架有意义的唯一值是development,这会导致机架将主机默认为localhost而不是0.0.0.0 。因此,首先将RACK_ENV设置为production是愚蠢的,或者检查它是否设置为那个,但是这种愚蠢已经扎根了。