Рельсы + прораб + рабочий виснет сервер

На моем локальном компьютере я пытаюсь запустить свое приложение rails и отложил выполнение работы с помощью Foreman. Мой Procfile выглядит так:

web: bundle exec rails server -p $PORT
worker: bundle exec rake jobs:work

Когда я начинаю бригадир, выполняются только первые два веб-запроса. При третьем запросе сервер зависает. Первый запрос выводится в консоль, второй - нет.

Если я пропущу воркера в моем Procfile, сервер работает нормально и выводит все на консоль. Также, когда я запускаю rails server и worker без Foreman, все работает нормально.

Похоже, проблема с Форманом. Я предполагаю, что проблема в том, что Foreman ничего не выводит на консоль после первого запроса, и поэтому буфер не сбрасывается. Я просмотрел другие сообщения и в результате добавил STDOUT.sync = true в свой development.rb, но безуспешно.

Кто-нибудь знает? Спасибо!


person smek    schedule 06.07.2012    source источник


Ответы (4)


ОБНОВЛЕНИЕ: отслеживается и решается здесь:

https://github.com/ddollar/foreman/issues/244

TL; DR: установите драгоценный камень, не используйте foreman.pkg


У меня такая же проблема.

Вот ссылка на вопрос, который я задал по stackoverflow. @smek, если вы нашли ответ, ответьте пожалуйста!

person Vighnesh    schedule 08.08.2012
comment
Пока нет, обновление тоже не решило проблему. Теперь у меня есть другой файл Procfile для разработки, в котором я оставил воркер, который я запускаю вручную. Я начинаю бригадира с foreman start -p 3000 -f Procfile.dev, а рабочего с rake jobs:work. Не идеально, но у меня работает. - person smek; 08.08.2012
comment
У меня это тоже работает. Но я не уверен, поддерживает ли это Heroku. Я использую Heroku для развертывания своего приложения. Вы изучили это? - person Vighnesh; 08.08.2012
comment
Да, отлично работает. Просто у вас есть другой файл procfile для локальной разработки. Heroku использует Procfile, а для разработки я использую Procfile.dev - person smek; 09.08.2012
comment
Использование гема мастера вместо foreman.pkg помогло, спасибо! - person smek; 17.08.2012

У меня была аналогичная проблема при попытке реализовать и протестировать DJ + Foreman в моей локальной среде разработки. Я намеревался развернуть на Heroku и использовал в качестве руководства статью следующую. Если вы также выполняете развертывание на Heroku, я рекомендую установить Heroku Toolbelt, в который входит Foreman. В моем случае у меня уже был установлен Heroku Toolbelt, поэтому я просто переустановил его.

person kevinsapp    schedule 29.11.2012

в большинстве случаев кто-то оставлял в коде инструкцию отладчика / pry или вы помещали где-нибудь точку останова.

если вы ничего не можете найти, вы можете использовать системные инструменты, такие как lsof или gdb, чтобы узнать, что ваш процесс ruby ​​делает в данный момент. это может помочь найти проблему.

person phoet    schedule 06.07.2012

Я только начал использовать Foreman около часа назад, и у меня были некоторые проблемы с моими задачами с граблями и rails server зависанием при запуске Foreman. Когда я удалил гем pry из своего Gemfile, он заработал, но это было неприемлемо, поскольку я использую pry в разработке.

Затем я обновился до версии Foreman 0.49.0 (выпущенной около 10 минут назад), и проблема была исправлена. Жаль, что я не начал работать над этой задачей через час, потому что тогда я бы получил 0.49.0 для начала и мне не пришлось бы возиться в течение часа :)

Вам следует попробовать обновить Foreman и посмотреть, решит ли это вашу проблему.

person balexand    schedule 11.07.2012
comment
Извините за поздний ответ, но обновление Foreman не решает проблему. - person smek; 08.08.2012