To cite from the Puma README:
Because of various platforms not being implement certain things, the following differences occur when Puma is used on different platforms:
- JRuby, Windows: server sockets are not seamless on restart, they must be closed and reopened. These platforms have no way to pass descriptors into a new process that is exposed to ruby
- JRuby, Windows: cluster mode is not supported due to a lack of fork(2)
- Windows: daemon mode is not supported due to a lack of fork(2)
As it clearly states, cluster mode (i.e. running a single puma instance with multiple workers) and daemon mode (detaching from the shell after starting) are not supported on Windows.
You should either use a differt OS (e.g. Linux) or use Puma in single-worker mode. You could manually start multiple Puma instance on different ports and loadbalance between them though, even on Windows. You just need a frontend loadbalancer for that and it isn't as seamless as the native cluster mode builtin to Puma.