From f61ca77cd4b22522d28485be9f7d8d1af6bc4367 Mon Sep 17 00:00:00 2001 From: Jon Leighton Date: Wed, 29 Feb 2012 22:45:14 +0000 Subject: [PATCH] Use posix-spawn gem rather than sfl, as sfl requires fork, which can't work on JRuby. --- lib/capybara/poltergeist/client.rb | 4 ++-- lib/capybara/poltergeist/inspector.rb | 4 +++- poltergeist.gemspec | 2 +- spec/unit/inspector_spec.rb | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/capybara/poltergeist/client.rb b/lib/capybara/poltergeist/client.rb index ba34513..8b6aed5 100644 --- a/lib/capybara/poltergeist/client.rb +++ b/lib/capybara/poltergeist/client.rb @@ -1,4 +1,4 @@ -require 'sfl' +require 'posix/spawn' module Capybara::Poltergeist class Client @@ -22,7 +22,7 @@ module Capybara::Poltergeist def start check_phantomjs_version - @pid = Kernel.spawn(command) + @pid = POSIX::Spawn.spawn(command) end def stop diff --git a/lib/capybara/poltergeist/inspector.rb b/lib/capybara/poltergeist/inspector.rb index 3edea46..4b5043e 100644 --- a/lib/capybara/poltergeist/inspector.rb +++ b/lib/capybara/poltergeist/inspector.rb @@ -1,3 +1,5 @@ +require 'posix/spawn' + module Capybara::Poltergeist class Inspector BROWSERS = %w(chromium chromium-browser google-chrome safari) @@ -24,7 +26,7 @@ module Capybara::Poltergeist def open if browser - Kernel.spawn("#{browser} #{url}") + POSIX::Spawn.spawn("#{browser} #{url}") else raise Error, "Could not find a browser executable to open #{url}. " \ "You can specify one manually using e.g. `:inspector => 'chromium'` " \ diff --git a/poltergeist.gemspec b/poltergeist.gemspec index 7c3ad92..6c36469 100644 --- a/poltergeist.gemspec +++ b/poltergeist.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.add_dependency "capybara", "~> 1.0" s.add_dependency "json", "~> 1.6" - s.add_dependency "sfl", "~> 2.0" + s.add_dependency "posix-spawn", "~> 0.3" s.add_dependency "http_parser.rb", "~> 0.5.3" s.add_dependency "faye-websocket", "~> 0.2" diff --git a/spec/unit/inspector_spec.rb b/spec/unit/inspector_spec.rb index 54d0589..64fe684 100644 --- a/spec/unit/inspector_spec.rb +++ b/spec/unit/inspector_spec.rb @@ -27,7 +27,7 @@ module Capybara::Poltergeist it 'can be opened' do subject.stub(:port => 1234, :browser => 'chromium') - Kernel.should_receive(:spawn).with("chromium http://localhost:1234/") + POSIX::Spawn.should_receive(:spawn).with("chromium http://localhost:1234/") subject.open end