这是Rails 3.0.3。
我的部署是带有Phusion Passenger的Apache 2.0。我的httpd.conf块看起来像这样:
<VirtualHost *:80>
ServerName www.mycarparts.co
DocumentRoot /projects/mcp5/public
<Directory /projects/mcp5/public>
AllowOverride all
Options -MultiViews
Allow from all
</Directory>
RailsEnv staging
</VirtualHost>
我的配置目录中也未指定“生产”。 grep -i -r得出这个:
config / application.rb:#您仅限于:test,:development或:production。 config / database.yml:#不要将此db设置为与开发或生产相同。 配置/ database.yml的:生产: config / database.yml:database:mcp_production config / database.yml:database:mcp_production config / environments / production.rb:#生产环境适用于已完成的“实时”应用程序。 config / environments / production.rb:#在生产中使用不同的缓存存储 config / environments / production.rb:#在生产中,Apache或nginx已经这样做了 config / newrelic.yml:#prigeized RAILS_ENV(即生产,分期等) config / newrelic.yml:#不要用于生产或负载测试 config / newrelic.yml:#打开生产中的代理,进行全天候监控。 NewRelic的 配置/ newrelic.yml:生产: config / newrelic.yml:#与生产相同。提供对该环境的支持
Apache / Passenger / Rails堆栈的这些小惊喜开始变得令人生气。任何人都可以帮助我以正确的模式运行我的应用程序吗?
编辑:我可以说:RailsEnv peeweeeffingherman
在那里,应用程序仍然出现在生产模式,我知道这是默认设置。显然,设置没有被读取。为什么会这样?
答案 0 :(得分:11)
如果您使用的是Phusion Passenger&lt; 3.0.2然后RailsEnv只对Rails 1和Rails 2应用程序产生影响; Rails 3应用程序被认为是Rack应用程序,需要RackEnv。
这是用户混淆的潜在根源,因此Phusion Passenger 3,RailsEnv和RackEnv已经相同,而Phusion Passenger设置了RAILS_ENV和RACK_ENV。 Nginx版本的Phusion Passenger一直都是这样的。
答案 1 :(得分:1)
您是否尝试过rails_env production
?