2012-07-06 11 views
6

Na mojej lokalnej maszynie próbuję uruchomić moją aplikację railsową i opóźnić pracownika zadania za pomocą Foreman. Mój Procfile wygląda następująco:Railsy + brygadzista + robotnik wisi na serwerze

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

Po uruchomieniu brygadzisty zostają wykonane tylko pierwsze dwa żądania sieciowe. Przy trzecim żądaniu serwer się zawiesza. Pierwsze żądanie jest wyprowadzane w konsoli, drugie nie.

Jeśli pominę robotnika w moim pliku Procfile, serwer działa poprawnie i wyprowadza wszystko na konsolę. Również kiedy uruchamiam serwer szyny i pracownika bez Foremana wszystko działa dobrze.

Wygląda na to, że istnieje problem z Foremanem. Zgaduję, że to problem z tym, że Foreman nie wysyła niczego do konsoli po pierwszym żądaniu i dlatego bufor nie zostanie przepłukany. Szukałem innych postów i w rezultacie dodano STDOUT.sync = true do mojego development.rb, ale bez powodzenia.

Czy ktoś ma wskazówkę? Dzięki!

Odpowiedz

3

UPDATE: śledzone i rozwiązane tutaj:

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

TL; DR: Instalacja klejnot, nie używaj foreman.pkg


Jestem stoi ten sam problem .

Oto link do question Zapytałem na stackoverflow. @smek, jeśli znalazłeś odpowiedź, odpowiedz!

+0

Jeszcze nie, aktualizacja nie rozwiązała problemu również dla mnie. Mam teraz inny plik Procfile do opracowania, w którym pominięto pracownika, który uruchamiam ręcznie.Zaczynam majstra z '' 'majster start -p 3000 -f Procfile.dev''' i robotnik z' '' rake jobs: work'''. Nie idealny, ale działa dla mnie. – smek

+0

To też działa dla mnie. Ale nie jestem pewien, czy Heroku to popiera. Używam Heroku do wdrażania mojej aplikacji. Czy sprawdziłeś to? – Vighnesh

+0

Tak, to działa dobrze. Masz tylko inny plik procfile dla lokalnego rozwoju. Heroku używa '' 'Procfile''' i dla rozwoju korzystam z' '' Procfile.dev''' – smek

0

w większości przypadków ktoś zostawił w kodzie instrukcję debugger/pry lub umieścił w niej punkt przerwania.

Jeśli nie możesz znaleźć niczego, możesz użyć narzędzi systemowych, takich jak lsof lub gdb, aby dowiedzieć się, co aktualnie robi twój proces ruby. które mogą pomóc w znalezieniu problemu.

0

Właśnie zacząłem używać Foreman około godzinę temu, a miałem problemy z obydwoma zadaniami rake i rails server zwisającymi, gdy prowadził mnie Foreman. Po usunięciu klejnotu pry z mojego Gemfile działało, ale było to nie do przyjęcia, ponieważ używam narzędzia do programowania.

Następnie zaktualizowałem do wersji majstra 0.49.0 (która została wydana około 10 minut temu) i problem został rozwiązany. Szkoda, że ​​nie zacząłem pracować nad tym zadaniem godzinę później, bo wtedy dostałbym 0.49.0 na początek i nie musiałbym się męczyć przez godzinę :)

Powinieneś spróbować ulepszyć Foreman i sprawdzić czy naprawia twój problem.

+0

Przepraszamy za spóźnioną odpowiedź, ale aktualizacja Foreman nie rozwiązuje problemu. – smek

2

Miałem podobny problem podczas próby wdrożenia i testowania DJ + Foreman w moim lokalnym środowisku dev. Zamierzałem wdrożyć system w Heroku i jako przewodnik korzystałem z artykułu following. Jeśli wdrażasz także Heroku, polecam zainstalować Heroku Toolbelt, który zawiera Foremana. W moim przypadku zainstalowałem już Heroku Toolbelt, więc po prostu go ponownie zainstalowałem.