The quickest hack is to use exec
:
# Bad quick fix
pid = Process.spawn "exec bundle exec puma test/fixtures/app.ru -w 3 -t 1:1 -p 0 -e development > test/logs/puma_1961_1393875906.917352.log"
This replaces the shell with the invoked process.
However, you should never use Process.spawn with a shell command. When combined with variables, it leads to surprising, insecure and unpredictable behavior. Instead, you should separate the arguments and set up the redirection yourself:
# Good solution
pid = Process.spawn("bundle", "exec", "puma", "test/fixtures/app.ru", "-w", "3", "-t", "1:1", "-p", "0", "-e", "development", :out=>"test/logs/puma_1961_1393875906.917352.log")
This avoids the shell in the first place.