← головнаПрограмування

[Фікс] No such file or directory @ rb_sysopen - tmp/pids/server.pid

Фікс запуску Rails серверу. Вирішення помилки No such file or directory @ rb_sysopen - tmp/pids/server.pid. Пояснюємо для чого потрібен файл server.pid

ЗмістНатисність на посилання, щоб перейти до потрібного місця
Іноді буває так, що тека tmp/pids губиться на локальній машині. Вона знаходиться з зрозумілих причин у gitignore. Як результат, сервер не може стартанути і показує помилку:
* 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)
Текст помилики доволі буквальний:
No such file or directory @ rb_sysopen - tmp/pids/server.pid

Фіскимо помилку

Нам треба створити теку tmp/pids самостійно. Для цього можна з терміналу запустити:
mkdir -p tmp/pids
Перезапускаємо сервер, і він має успішно стартанути створивши файл server.pid.
Cуто з цікавості можна перевірити:
ls tmp/pids 
Має показати файл:
server.pid

Для чого потрібен server.pid?

Файл server.pid використовується сервером Rails для зберігання ідентифікатора процесу (PID) активного серверного процесу. Цей PID допомагає системі відстежувати, який саме процес відповідає за сервер. Перед запуском нового сервера Rails перевіряє наявність цього файлу. Якщо файл є, а процес, на який він вказує, досі активний, Rails не дозволяє запустити новий сервер, щоб уникнути конфліктів. 
Тобто саме цей відповідає за те, щоб ви випадково не запустили другий сервер за допомогою rails s в сусідній табі терміналу.
Крім того, файл допомагає правильно завершити роботу сервера. Коли сервер зупиняється, файл server.pid автоматично видаляється, сигналізуючи, що сервер більше не працює і його можна перезапустити без проблем. Якщо ж файл відсутній, Rails створює його при старті. У випадку, якщо файл існує, але процес, на який він посилається, вже неактивний, це може викликати помилку, і тоді файл потрібно видалити вручну перед повторним запуском сервера.

🔥 Більше дописів

Всі публікації
Що таке PORO в Ruby?
Програмування8 груд. '24, 12:46

Що таке PORO в Ruby?

Що таке PORO (Plain Old Ruby Object) у Ruby, як його використовувати для написання зрозумілого ко...