diff --git a/lib/capybara.rb b/lib/capybara.rb index 506be45d..1d8d26bd 100644 --- a/lib/capybara.rb +++ b/lib/capybara.rb @@ -9,7 +9,7 @@ module Capybara class NotSupportedByDriverError < CapybaraError; end class << self - attr_accessor :debug, :asset_root + attr_accessor :debug, :asset_root, :app_host attr_writer :default_selector def default_selector @@ -31,6 +31,7 @@ module Capybara autoload :Base, 'capybara/driver/base' autoload :RackTest, 'capybara/driver/rack_test_driver' autoload :Celerity, 'capybara/driver/celerity_driver' + autoload :Culerity, 'capybara/driver/culerity_driver' autoload :Selenium, 'capybara/driver/selenium_driver' end end diff --git a/lib/capybara/driver/celerity_driver.rb b/lib/capybara/driver/celerity_driver.rb index f2be599a..ad0ea712 100644 --- a/lib/capybara/driver/celerity_driver.rb +++ b/lib/capybara/driver/celerity_driver.rb @@ -41,40 +41,14 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base end end - attr_reader :app, :rack_server, :host, :port, :celerity_options, :culerity + attr_reader :app, :rack_server - def self.server - unless @_server - @_server = ::Culerity::run_server - at_exit do - @_server.close - end - end - @_server - end - - def initialize(app, options = {}) - + def initialize(app) @app = app - - top_opts = [:driver, :host, :port, :rack, :culerity] - - if options[:rack] == false - @host = options[:host] || 'localhost' - @port = options[:port] || '3001' - Capybara.log("celerity driver using #{host}:#{port}") - else + unless Capybara.app_host + Capybara.log("using app host #{Capybara.app_host}") @rack_server = Capybara::Server.new(@app) - Capybara.log("celerity driver using rack") end - - @celerity_options = { - :browser => :firefox, - :log_level => :off - }.merge(options.reject {|k,v| top_opts.include?(k) }) - - @culerity = options[:culerity] || !RUBY_PLATFORM.match(/java/) - end def visit(path) @@ -99,35 +73,20 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base browser.execute_script "#{script}" end - private def url(path) - if rack_server - rack_server.url(path) - else - "http://#{host}:#{port}#{path}" - end + Capybara.app_host || rack_server.url(path) end def browser unless @_browser - if culerity - Capybara.log "celerity driver via Culerity" - require 'culerity' - @_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, celerity_options - at_exit do - @_browser.exit - end - else - require 'celerity' - @_browser = ::Celerity::Browser.new(celerity_options) - end + require 'celerity' + @_browser = ::Celerity::Browser.new(:browser => :firefox, :log_level => :off) end @_browser - end end diff --git a/lib/capybara/driver/culerity_driver.rb b/lib/capybara/driver/culerity_driver.rb new file mode 100644 index 00000000..04017031 --- /dev/null +++ b/lib/capybara/driver/culerity_driver.rb @@ -0,0 +1,29 @@ +require 'culerity' + +class Capybara::Driver::Culerity < Capybara::Driver::Celerity + + + def self.server + unless @_server + @_server = ::Culerity::run_server + at_exit do + @_server.close + end + end + @_server + end + +private + + + def browser + unless @_browser + @_browser = ::Culerity::RemoteBrowserProxy.new self.class.server, {:browser => :firefox, :log_level => :off} + at_exit do + @_browser.exit + end + end + @_browser + end + +end diff --git a/lib/capybara/session.rb b/lib/capybara/session.rb index 60e20b16..97994def 100644 --- a/lib/capybara/session.rb +++ b/lib/capybara/session.rb @@ -4,14 +4,7 @@ module Capybara attr_reader :app, :mode, :mode_options def initialize(mode, app) - if mode.respond_to?(:has_key?) - @mode = mode[:driver] - @mode_options = mode - else - @mode = mode - @mode_options = {} - end - + @mode = mode @app = app end @@ -22,8 +15,10 @@ module Capybara Capybara::Driver::RackTest.new(app) when :selenium Capybara::Driver::Selenium.new(app) - when :culerity, :celerity - Capybara::Driver::Celerity.new(app, mode_options) + when :celerity + Capybara::Driver::Celerity.new(app) + when :culerity + Capybara::Driver::Culerity.new(app) else raise Capybara::DriverNotFoundError, "no driver called #{mode} was found" end