Sha256: 0e703edbe816eb08d27df0d6267a1785326022457b37dbdbb3f761b916d03222

Contents?: true

Size: 1.42 KB

Versions: 59

Compression:

Stored size: 1.42 KB

Contents

require "drb/drb"
# This code was taken from the RSpec project and slightly modified.

module Cucumber
  module Cli
    class DRbClientError < StandardError
    end
    # Runs features on a DRB server, originally created with Spork compatibility in mind.
    class DRbClient
      DEFAULT_PORT = 8990

      class << self

        def run(args, error_stream, out_stream, port = nil)
          port ||= ENV["CUCUMBER_DRB"] || DEFAULT_PORT

          setup_support_for_io_streams_over_drb

          feature_server = DRbObject.new_with_uri("druby://127.0.0.1:#{port}")
          cloned_args = [] # I have no idea why this is needed, but if the regular args are sent then DRb magically transforms it into a DRb object - not an array
          args.each { |arg| cloned_args << arg }
          feature_server.run(cloned_args, error_stream, out_stream)
        rescue DRb::DRbConnError => e
          raise DRbClientError, "No DRb server is running."
        end

        private
        def setup_support_for_io_streams_over_drb
          # See http://redmine.ruby-lang.org/issues/show/496 as to why we specify localhost:0
          begin
            DRb.start_service("druby://localhost:0")
          rescue SocketError, Errno::EADDRNOTAVAIL
            # Ruby-1.8.7 on snow leopard doesn't like localhost:0 - but just :0
            # seems to work just fine
            DRb.start_service("druby://:0")
          end
        end

      end

    end
  end
end

Version data entries

59 entries across 57 versions & 11 rubygems

Version Path
candlepin-api-0.4.0 bundle/ruby/1.8/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
candlepin-api-0.4.0 bundle/ruby/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
candlepin-api-0.4.0 bundle/ruby/1.9.1/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
librarian-puppet-0.9.9 vendor/gems/ruby/1.9.1/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
librarian-puppet-0.9.8 vendor/gems/ruby/1.9.1/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
librarian-puppet-0.9.4 vendor/gems/ruby/1.8/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
casecumber-1.0.2.1 lib/cucumber/cli/drb_client.rb
casecumber-1.2.1.cb2 lib/cucumber/cli/drb_client.rb
librarian-puppet-0.9.3 vendor/gems/ruby/1.8/gems/cucumber-1.2.1/lib/cucumber/cli/drb_client.rb
cucumber-1.2.1 lib/cucumber/cli/drb_client.rb
resque-pool-0.3.0 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
ftl-0.2.0 vendor/bundle/gems/cucumber-1.2.0/lib/cucumber/cli/drb_client.rb
cucumber-1.2.0 lib/cucumber/cli/drb_client.rb
frameworks-capybara-0.2.0.rc6 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
frameworks-capybara-0.2.0.rc5 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
frameworks-capybara-0.2.0.rc4 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
frameworks-capybara-0.2.0.rc3 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
frameworks-capybara-0.2.0.rc2 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
resque-pool-0.3.0.beta.2 vendor/bundle/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/cucumber-1.1.9/lib/cucumber/cli/drb_client.rb