Sha256: 4786a6824d85a44c23534af30ca0443459ce45c7c6232a5245cff15451a98b7e

Contents?: true

Size: 999 Bytes

Versions: 4

Compression:

Stored size: 999 Bytes

Contents

module DockTest
  module DSL

    attr_reader :url
    # sets the test url
    # also creates a new webrick server process
    def url=(value)
      @url = value

      if localhost? && @server_thread.nil?
        require "rack"
        require 'webrick'

        ARGV.clear # clear ARGV as it is used by Rack to configure server

        server = WEBrick::HTTPServer.new(:Port => port).tap do |server|
          server.mount '/', Rack::Handler::WEBrick, Rack::Server.new.app
        end
        @server_thread = Thread.new { server.start }
        trap('INT') do
          server.shutdown
          exit
        end
      end
    end

    def port
      URI.parse(@url).port
    end

    def localhost?
      @url && ['127.0.0.1', 'localhost'].include?(URI.parse(@url).host)
    end

    def skippy=(envs)
      @skippy_envs = Array(envs).map(&:to_s)
    end

    def skippy_envs
      @skippy_envs ||= ['production']
    end

    def configure(&block)
      block.call(DockTest)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dock_test-0.1.5 lib/dock_test/dsl.rb
dock_test-0.1.3 lib/dock_test/dsl.rb
dock_test-0.1.2 lib/dock_test/dsl.rb
dock_test-0.1.1 lib/dock_test/dsl.rb