Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Czasami zdarza się, że folder tmp/pids gubi się na lokalnej maszynie. Z oczywistych powodów znajduje się w gitignore. W rezultacie serwer nie może wystartować i wyświetla błąd:
* Listening on http://0.0.0.0:3000bundler: failed to load command: puma (/Users/memecode/.rbenv/versions/3.3.5/bin/puma)/Users/memecode/.rbenv/versions/3.3.5/lib/ruby/gems/3.3.0/gems/puma-6.5.0/lib/puma/launcher.rb:316:in `write': No such file or directory @ rb_sysopen - tmp/pids/server.pid (Errno::ENOENT)
Treść błędu jest dość dosłowna:
No such file or directory @ rb_sysopen - tmp/pids/server.pid
Rozwiązanie błędu
Musimy samodzielnie stworzyć folder tmp/pids. W tym celu można z terminala uruchomić:
mkdir -p tmp/pids
Restartujemy serwer, a on powinien pomyślnie wystartować, tworząc plik server.pid.
Z czystej ciekawości można sprawdzić:
ls tmp/pids
Powinien pokazać plik:
server.pid
Do czego potrzebny jest server.pid?
Plik server.pid jest używany przez serwer Rails do przechowywania identyfikatora procesu (PID) aktywnego procesu serwera. Ten PID pomaga systemowi śledzić, który dokładnie proces odpowiada za serwer. Przed uruchomieniem nowego serwera Rails sprawdza obecność tego pliku. Jeśli plik istnieje, a proces, na który wskazuje, jest nadal aktywny, Rails nie pozwala na uruchomienie nowego serwera, aby uniknąć konfliktów.
To właśnie ten plik odpowiada za to, aby przypadkowo nie uruchomić drugiego serwera za pomocą rails s w sąsiedniej karcie terminala.
Ponadto plik pomaga poprawnie zakończyć pracę serwera. Gdy serwer się zatrzymuje, plik server.pid jest automatycznie usuwany, sygnalizując, że serwer już nie działa i można go ponownie uruchomić bez problemów. Jeśli plik jest nieobecny, Rails tworzy go przy starcie. W przypadku, gdy plik istnieje, ale proces, na który wskazuje, jest już nieaktywny, może to spowodować błąd, a plik należy usunąć ręcznie przed ponownym uruchomieniem serwera.
Ten post nie ma jeszcze żadnych dodatków od autora.