Проблемы с падением WEBrick - PullRequest
       6

Проблемы с падением WEBrick

1 голос
/ 12 января 2011

Вот подробности при запуске

=> Загрузка 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 port = 3000

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

ActionController :: RoutingError (Не найдено ни одного маршрута) /thumbnails/missing.png"):

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

Любая помощь с благодарностью.

Ответы [ 4 ]

1 голос
/ 15 августа 2011

Выглядит как сбой вебрика после ошибки / предупреждения, напечатанного на регистраторе STDOUT. Я обошел его, используя thin, который не регистрирует 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

1 голос
/ 11 июля 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 !@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 для выводаВместо этого на консоли отлаживайте сообщения.

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

1 голос
/ 12 января 2011

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

Чтобы использовать Mongrel:

gem install mongrel

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

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

0 голосов
/ 14 февраля 2011
...