2 years ago
tl;dr Either tmp/pids/ is being removed during build (as it is in git w/ a .keep file) or there's an issue with write access as Puma is unable to write tmp/pids/server.pid.
My Procfile has a web target of bundle exec puma -C config/puma.rb however this fails on Railway.app with the error
/usr/local/rvm/gems/ruby-3.2.3/gems/puma-6.4.2/lib/puma/launcher.rb:312:in `write': No such file or directory @ rb_sysopen - tmp/pids/server.pid (Errno::ENOENT)I am able to work around it by running bundle exec rails server but this doesn't contain the same configurations as puma.rb.
2 Replies
2 years ago
The directory must have been missing as it is now working when .dockerignore contains
/tmp/pids/*
!/tmp/pids/.keepAdditionally I can confirm puma.rb is evaluated whether you use puma -C config/puma.rb or rails server. I'd guess rails server does some setup work (like mkdir -p tmp/pids perhaps) to then run puma -C config/puma.rb without any issue.