…e an exception to be thrown. Fix this.
…can override Bundler setup behavior.
…all their own signal handlers.
…e Ruby's are broken.
…AILS_ENV in both Rack and Rails spawners.
…oolServerExecutable to Apache, it can cause race conditions.
Once you've sent a file descriptor you expect to be able to close it on the sender's side, even if the other side hasn't read the file descriptor yet. Not so: on some operating systems (I'm looking at you OS X) this can cause the receiving side to receive a bad file descriptor. The post negotiation protocol ensures that we block until the other side has really received the file descriptor.
When the ApplicationSpawner server spawns a worker process, do not let it the worker process communicate directly with the process that issued the spawn command to the ApplicationSpawner server. This is because upon receiving the owner pipe, the issuer process will send a message to the ApplicationSpawner server, as part of the new FD negotiation protocol. If the ApplicationSpawner server has gone back into its message multiplexing main loop then it'll crash. Instead, the ApplicationSpawner server will now act as a proxy between the issuer and the worker process.