繁体   English   中英

Ruby on Rails杂种错误

[英]Ruby on Rails Mongrel error

当我在“欢迎”页面上单击“关于您的应用程序的环境”按钮时,这会在我的服务器控制台中发生。

** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready.  INT => stop (no restart).
** Mongrel 1.1.5 available at 0.0.0.0:3000
** Use CTRL-C to stop.
Sat Jul 17 02:24:28 -0400 2010: Error calling Dispatcher.dispatch #<NoMethodErro
r: You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.split>
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controll
er/cgi_process.rb:52:in `dispatch_cgi'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controll
er/dispatcher.rb:101:in `dispatch_cgi'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controll
er/dispatcher.rb:27:in `dispatch'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/rails.rb:76:in `process'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/rails.rb:74:in `synchronize'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/rails.rb:74:in `process'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:159:in `process_client'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:158:in `each'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:158:in `process_client'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:285:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:285:in `initialize'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:285:in `new'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:285:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:268:in `initialize'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:268:in `new'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel.rb:268:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:282:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:281:in `each'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/configurator.rb:281:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:128:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/../
lib/mongrel/command.rb:212:in `run'
C:/INSTAN~1.0-W/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.5-x86-mswin32-60/bin/mon
grel_rails:281
C:/INSTAN~1.0-W/ruby/bin/mongrel_rails:19:in `load'
C:/INSTAN~1.0-W/ruby/bin/mongrel_rails:19

这是版本

C:\InstantRails-2.0-win\rails_apps>rails -v
Rails 2.3.8

C:\InstantRails-2.0-win\rails_apps>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

C:\InstantRails-2.0-win\rails_apps>gem -v
1.3.7

C:\InstantRails-2.0-win\rails_apps>gem install mongrel
Successfully installed mongrel-1.1.5-x86-mswin32-60
1 gem installed
Installing ri documentation for mongrel-1.1.5-x86-mswin32-60...
Installing RDoc documentation for mongrel-1.1.5-x86-mswin32-60...

这个问题在Rails bugtracker上进行了详尽的讨论。 最终的解决方案似乎是“与时俱进”并迁移到Rails 3.x,但是对于我们这些还不能解决问题的人,有一个解决方法。

您可以将此mongrel.rb下载到config / initializers目录中。 这似乎使页面加载,但是资源(样式表,javascript)似乎没有加载。 我正在进一步调查,但想将其作为正确方向的快速指针而扔出去。

当我了解更多信息时,我将更新此答案。

我无法复制(我现在在Ruby 1.9.1 mingw32上),但是cgi_process.rb的第52行正在调用

if headers.include?('Set-Cookie')
  headers['cookie'] = headers.delete('Set-Cookie').split("\n")
end

也许尝试在environment.rb中检查会话密钥和cookie设置,然后尝试运行ruby脚本/服务器webrick(而不是mongrel)来查看是否是问题所在。

我也知道,如果您没有在database.yml中创建或设置数据库,则“关于您的应用程序”链接会炸毁,因此也请进行检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM