RAILS_ENV设置但Rails.env不同

时间:2011-07-26 01:38:54

标签: ruby-on-rails environment-variables

我认为我已经筋疲力尽所有我试图为rails应用程序设置环境。

在.htaccess

RailsEnv production (produces a 500 server error)

在environment.rb

ENV['RAILS_ENV'] ||= 'production' #does not set RAILS_ENV
ENV['RAILS_ENV'] = 'production' #sets RAILS_ENV to 'production', but Rails.env stays at 'development'

我正在使用bluehost ......但是直到昨天一切都很好......我认为我没有做任何改变......

编辑:抱歉,忘记提及它是Rails v2

另外,根据我在environment.rb中设置RAILS_ENV变量的位置,我得到错误。如果我把它放在我应该告诉它的地方,我会收到错误:

  

[Tue Jul 26 11:42:20 2011] [warn] [client x.x.x.x]   (104)通过对等方重置连接:mod_fcgid:从中读取数据时出错   FastCGI服务器
  [Tue Jul 26 11:42:20 2011] [错误] [客户   x.x.x.x]脚本标题的过早结束:dispatch.fcgi

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION

ENV['RAILS_ENV'] = "production" unless (File.expand_path(File.dirname(__FILE__)) =~ /MyProductionFolder/).nil?
require File.join(File.dirname(__FILE__), 'boot')
ENV['GEM_PATH'] = '/home/usr/ruby/gems'

如果我在引导连接之后放置它,变量将被设置但实际环境不会改变。

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION

require File.join(File.dirname(__FILE__), 'boot')
ENV['RAILS_ENV'] = "production" unless (File.expand_path(File.dirname(__FILE__)) =~ /MyProductionFolder/).nil?
ENV['GEM_PATH'] = '/home/usr/ruby/gems'

编辑#3:检查ENV ['RAILS_ENV'],我看到“生产”,但在直接检查RAILS_ENV时,我看到“开发”。

2 个答案:

答案 0 :(得分:0)

根据passenger docs,仅当设置了AllowOverride选项时,RailsEnv才能在.htaccess中工作。你有没有检查过那种情况?

答案 1 :(得分:0)

事实证明,我在创建应用程序的早期失败尝试中存在大量垃圾文件和文件夹。我在我的主应用程序中嵌入了一个名为'generate'的文件夹中的应用程序(猜猜是怎么回事:S(nub-ness))。其中包括空的cgi-bin文件夹和我的公共目录中的空dispatch.fcgi文件。我发誓,我没有想到那里,我发誓。

无论如何,长话短说,解决方案是将我的应用程序目录与一个新的rails应用程序进行比较并删除所有残缺。我还将新应用程序中的全新调度文件复制到我当前的应用程序中,并从database.yml文件中删除了所有注释和多余的换行符。字符和文件格式也可能在某处发挥作用(我的bluehost技术支持说)。另外,我从我的.htaccess中注释掉了“AddHandler fcgid-script .fcgi” - 之前我做过这个没有效果......所以我猜这个加上弹簧清理修复了我的问题。