Sha256: b214c26f32589fac6ca774ad1499e4da8a055f13ecbf1b6fed8ea69e999e3a21
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require 'calliper/config' module Calliper def self.server @server ||= Server.new(Config.application) end def self.server? !!@server end # NOTE: Borrows code from the fantastic Teaspoon gem: # http://github.com/modeset/teaspoon class Server attr_reader :application, :port, :logger def initialize(application, port = Config.port, logger = nil) @application = application @port = port @logger = logger end def start @thread = Thread.new do server = Rack::Server.new(rack_options) server.start end Timeout.timeout(60) do @thread.join(0.1) until responsive? end rescue Timeout::Error raise "Server failed to start within 60 seconds." rescue => e raise "Cannot start server: #{e.message}" end def responsive? return false if @thread && @thread.join(0) TCPSocket.new('127.0.0.1', port).close return true rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH return false end def rack_options { app: application, environment: 'test', Port: port, AccessLog: [], Logger: logger } end def url "http://127.0.0.1:#{port}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
calliper-0.0.1 | lib/calliper/server.rb |