2011-01-11 52 views
1

這裏的問題是細節在啓動時與使用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崩潰的根本原因,因爲它不會每次都發生。

任何幫助非常感謝。

回答

1

對不起,我不知道你的問題的答案,但我可以提供一個潛在的解決方法,你可能會很滿意:使用Mongrel而不是WEBrick。 Mongrel運行速度更快,並且完全兼容。也許它不會在路線未找到時崩潰。大多數Rails開發人員在幾年內都沒有使用過WEBrick。

要使用雜種:

gem install mongrel 

如果Rails的發現雜種它會自動使用它。

希望修復它!

+0

Thx的建議布賴恩。我會試試看。順便說一句,它顯然WEBrick的問題來自RoutingError ... – daz13 2011-01-18 19:05:44

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 [email protected]? 
      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在控制檯上輸出調試消息。

工作就像我的魅力。

1

看起來像webrick在打印到記錄器STDOUT上的錯誤/警告之後崩潰。我通過使用不會記錄到STDOUT的瘦身來解決這個問題。

gem install eventmachine --pre 
gem install thin 
thin start 

ENV:win7x64,紅寶石1.9.2(2011-07-09)[I386-的mingw32]的Rails 3.0.9