Ruby on rails RAILS_ENV已设置,但RAILS.ENV不同

Ruby on rails RAILS_ENV已设置,但RAILS.ENV不同,ruby-on-rails,environment-variables,Ruby On Rails,Environment Variables,我想我已经用尽了我所能找到的一切来尝试并实际为我的rails应用程序设置环境 In.htaccess RailsEnv production (produces a 500 server error) In environment.rb ENV['RAILS_ENV'] ||= 'production' #does not set RAILS_ENV ENV['RAILS_ENV'] = 'production' #sets RAILS_ENV to 'production', but Rai

我想我已经用尽了我所能找到的一切来尝试并实际为我的rails应用程序设置环境

In.htaccess

RailsEnv production (produces a 500 server error)
In 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变量的位置,我会得到错误。如果我把它放在我被告知应该放的地方,我会得到错误:

[星期二2011年7月26日11:42:20][警告][客户x.x.x.x] (104)对等方重置连接:mod_fcgid:从中读取数据时出错 FastCGI服务器
[星期二2011年7月26日11:42:20][错误][客户] 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

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:Inspecting ENV['RAILS_ENV'],我看到“production”,但当直接检查RAILS_ENV时,我看到“development”。

根据,只有在设置了AllowOverride选项的情况下,RailsEnv才能在.htaccess中工作。你检查过是否是这样吗?

结果是,我有一大堆垃圾文件和文件夹,都是以前创建应用程序失败时留下的。我在我的主应用程序中的一个名为“generate”的文件夹中嵌套了一个应用程序(猜猜这是怎么发生的:S(nub ness))。除此之外,我的公共目录中还有一个空的cgi bin文件夹和一个空的dispatch.fcgi文件。我发誓,我不知道那是怎么来的


总之,长话短说,解决方案是将我的应用程序目录与一个新的rails应用程序进行比较,并删除所有的瑕疵。我还将新应用程序中全新的调度文件复制到当前应用程序中,并从database.yml文件中删除所有注释和多余的换行符。字符和文件格式可能在某些地方也起了作用(我的bluehost技术支持人员说)。另外,我在.htaccess中注释掉了“AddHandler fcgid script.fcgi”-我以前做过这样的操作,但没有任何效果…所以我猜,再加上春季大扫除,我的问题得到了解决。

可能是您的主机更改了某些内容、升级了rails或其他内容。也许,但正如预期的那样,他们正在推我的借口,告诉我“检查rails论坛”您是否尝试过在environment.rb文件中设置
Rails.env='production'
,看看会发生什么?这是Rails版本2。这给了我一个应用程序错误。
# 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'