1

以下是启动时的详细信息

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

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

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

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

非常感谢任何帮助。

4

4 回答 4

1

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

要使用 Mongrel:

gem install mongrel

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

希望修复它!

于 2011-01-12T08:26:11.307 回答
1

在向记录器 STDOUT 打印错误/警告后,看起来 webrick 崩溃了。我通过使用不记录到 STDOUT 的瘦来解决它。

gem install eventmachine --pre
gem install thin
thin start

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

于 2011-08-15T19:28:59.123 回答
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 在控制台上输出调试消息。

工作对我来说就像一个魅力。

于 2011-07-11T13:43:49.070 回答
0

另请参阅:https ://rails.lighthouseapp.com/projects/8994/tickets/5590-rails-30-crashes-ruby-192p0-on-repeated-browser-refresh

我对服务器很幸运。

于 2011-02-14T15:20:06.120 回答