我认为我已经筋疲力尽所有我试图为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时,我看到“开发”。
答案 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” - 之前我做过这个没有效果......所以我猜这个加上弹簧清理修复了我的问题。