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!
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
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
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