rewrite BrowserStackLocal spawning to be better #37
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Right now, the spawning uses
IO.popen
and has a bunch of workarounds to support Ruby 1.8. This is pretty bad.Ruby 1.8 has been EOL for more than 10 years. I don't think we need to support it any more.
This rewrites the process spawning to use Stripe's excellent subprocess gem. It also adds a startup timeout, because right now if the
BrowserStackLocal
binary hangs for some reason, the entire program is just stuck on a.readline
call. It also calls.wait
on the child process after dæmonization succeeds, because otherwise you end up with an un-reaped defunct process sitting around forever.