Проблемы со сбоем 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] ИНФОРМАЦИЯ ruby ​​1.9.2 (18 августа 2010 г.) [i386-mingw32]
[11-01-2011 13:43:57] ИНФОРМАЦИЯ WEBrick::HTTPServer#start: pid=10216 port =3000

периодически WEBrick падает. Единственное сообщение об ошибке:

ActionController::RoutingError (Нет маршрута, соответствующего "/thumbnails/missing.png"):

Это сообщение об ошибке появляется время от времени (я использую скрепку), но не вызывает каждый раз сбой WEBrick. Я потратил немного времени, пытаясь устранить ошибку маршрутизации, но еще не решил ее. Я не думаю, что это основная причина сбоя WEBrick, поскольку это происходит не каждый раз.

Любая помощь очень ценится.


person daz13    schedule 11.01.2011    source источник


Ответы (4)


Извините, я не знаю ответа на ваш вопрос, но могу предложить потенциальный обходной путь, который вас устроит: используйте Mongrel вместо WEBrick. Mongrel работает быстрее и полностью совместим. И, может быть, он не рухнет, если маршрут не будет найден. Большинство разработчиков Rails не использовали WEBrick уже несколько лет.

Чтобы использовать Дворнягу:

gem install mongrel

Если Rails найдет Mongrel, он будет использовать его автоматически.

Надеюсь, это исправит!

person Brian Morearty    schedule 12.01.2011
comment
спасибо за предложение Брайан. Я попробую это. Кстати, похоже, что проблемы WEBrick связаны с RoutingError... - person daz13; 18.01.2011

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 для вывода отладочных сообщений на консоль.

Работай как шарм для меня.

person Tanin    schedule 11.07.2011

Похоже на сбой webrick после того, как ошибка/предупреждение напечатано в регистраторе STDOUT. Я обхожу это, используя тонкий, который не регистрируется в STDOUT.

gem install eventmachine --pre
gem install thin
thin start

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

person pavel.mileshchenko    schedule 15.08.2011

Также см. это: https://rails.lighthouseapp.com/projects/8994/tickets/5590-rails-30-crashes-ruby-192p0-on-repeated-browser-refresh

Мне повезло с сервером Thin.

person Jason    schedule 14.02.2011