WEBrick崩溃的问题

时间:2011-01-11 21:08:24

标签: ruby-on-rails-3 webrick

以下是启动时的详细信息

=>启动WEBrick
=> Rails 3.0.1应用程序从http://0.0.0.0:3000开发开始 =>用-d调用分离
=> Ctrl-C关闭服务器 [2011-01-11 13:43:57] INFO WEBrick 1.3.1
[2011-01-11 13:43:57] INFO ruby​​ 1.9.2(2010-08-18)[i386-mingw32]
[2011-01-11 13:43:57] INFO WEBrick :: HTTPServer #start:pid = 10216 port = 3000

定期WEBrick崩溃。唯一的错误信息是:

  

ActionController :: RoutingError(没有路由匹配“/thumbnails/missing.png”):

此错误消息时有发生(我正在使用回形针),但每次发生时都不会导致WEBrick崩溃。我花了一点时间试图解决路由错误 - 但还没有解决它。我不认为这是WEBrick崩溃的根本原因,因为它不会每次都发生。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

抱歉,我不知道您问题的答案,但我可以提供您可能满意的潜在解决方法:使用Mongrel而不是WEBrick。 Mongrel运行速度更快,完全兼容。也许它不会在找不到路线时崩溃。大多数Rails开发人员在几年内都没有使用过WEBrick。

使用Mongrel:

gem install mongrel

如果Rails找到Mongrel,它会自动使用它。

希望能解决它!

答案 1 :(得分:1)

Mongrel无法解决问题,至少在Windows 7上使用Ruby 1.9.2 p180和Rails 3.0.9。

我发现导致问题的代码片段是(它位于C:\ Ruby192 \ lib \ ruby​​ \ gems \ 1.9.1 \ gems \ railties-3.0.9 \ lib \ rails \ rack \ log_tailer.rb):

module Rails
  module Rack
    class LogTailer
      .
      .
      .

      def tail!
        @file.seek @cursor

        if !@file.eof?
          contents = @file.read
          @cursor = @file.tell
          $stdout.print contents
        end
      end
    end
  end
end

如果您将此方法设为空白,则WEBrick将再次正常工作。我已经对它进行了大量的测试,抛出了很多RoutingError。

您可以使用此补丁。把它放在环境文件中:

module Rails
  module Rack
    class LogTailer

      def tail!

      end
    end
  end
end

这样做的缺点是您不会在控制台上看到调试消息。

要绕过此问题,您可以使用log4r在控制台上输出调试消息。

对我来说就像一个魅力。

答案 2 :(得分:1)

在记录器STDOUT上打印错误/警告后,看起来webrick崩溃了。我使用thin来解决它,它不会记录到STDOUT。

gem install eventmachine --pre
gem install thin
thin start

环境:win7x64,ruby 1.9.2(2011-07-09)[i386-mingw32],Rails 3.0.9

答案 3 :(得分:0)