Sha256: 684d7433665fb830703cfd4e9b116ba59aa83474f1a5d5ba5cafefe5287a8efe

Contents?: true

Size: 1.17 KB

Versions: 16

Compression:

Stored size: 1.17 KB

Contents

require 'singleton'
require 'rest-assured/config'
require 'rest-assured/api/resources'
require 'rest-assured/api/app_session'
require 'rest-assured/utils/port_explorer'

module RestAssured
  class Server
    attr_reader :address

    include Singleton

    at_exit do
      # I don't know why, but without this puts() at_exit is triggered on Ctrl-C when running in spork
      puts ''
      instance.stop if instance
    end

    def start!(opts = {})
      stop if up?

      Config.build(opts)

      self.address = "http#{AppConfig.ssl ? 's' : ''}://127.0.0.1:#{AppConfig.port}"

      @session = AppSession.new
    end

    def start(*args)
      start!(*args)

      while not up?
        sleep 0.5
      end
    end

    def address=(address)
      Double.site = @address = address
    end

    def stop
      @session.try(:stop)

      10.times do
        if up?
          sleep 0.5
          next
        else
          return
        end
      end
      raise "Failed to stop RestAssured server"
    end

    def up?
      !!@session && @session.alive? && !Utils::PortExplorer.port_free?(AppConfig.port) 
    end

    def self.method_missing(*args)
      instance.send(*args)
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rest-assured-2.0.0 lib/rest-assured/api/server.rb
rest-assured-1.2.2 lib/rest-assured/api/server.rb
rest-assured-1.2.1 lib/rest-assured/api/server.rb
rest-assured-1.2.0 lib/rest-assured/api/server.rb
rest-assured-1.1.10 lib/rest-assured/api/server.rb
rest-assured-1.1.9 lib/rest-assured/api/server.rb
rest-assured-1.1.8 lib/rest-assured/api/server.rb
rest-assured-1.1.7 lib/rest-assured/api/server.rb
rest-assured-1.1.6 lib/rest-assured/api/server.rb
rest-assured-1.1.5 lib/rest-assured/api/server.rb
rest-assured-1.1.4 lib/rest-assured/api/server.rb
rest-assured-1.1.3 lib/rest-assured/api/server.rb
rest-assured-1.1.2 lib/rest-assured/api/server.rb
rest-assured-1.1.1 lib/rest-assured/api/server.rb
rest-assured-1.1.0 lib/rest-assured/api/server.rb
rest-assured-1.0.0 lib/rest-assured/api/server.rb