为什么我的Rails应用程序总是在生产模式下运行?

时间:2011-02-07 19:25:04

标签: ruby-on-rails-3 passenger

这是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

在那里,应用程序仍然出现在生产模式,我知道这是默认设置。显然,设置没有被读取。为什么会这样?

2 个答案:

答案 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