class Contracto::Server

Public Class Methods

start_contracto_server!() click to toggle source
# File lib/contracto/server/controller.rb, line 11
def start_contracto_server!
  if contracto_server_running?
    puts 'contracto server is already running, enter "contracto stop" to kill it'
    return
  elsif !root_dir_exists?
    puts "current dir does not contain required contracto dir (#{Contracto::Config.root_dir})"
    return
  end

  create_routes_from_contract
  start_daemon!
  wait_until_server_is_running
end
stop_contracto_server!() click to toggle source
# File lib/contracto/server/controller.rb, line 25
def stop_contracto_server!
  uri = URI.parse("http://localhost:#{port}/contracto/terminate")
  response = Net::HTTP.get_response(uri)
  if response.is_a?(Net::HTTPOK)
    puts 'contracto server killed'
    puts response.body
  else
    puts "something went wrong: [#{response.code}] #{response.body}]"
  end
rescue Errno::ECONNREFUSED
  puts 'contracto server could not be killed (already dead or was never alive)'
end

Private Class Methods

contracto_server_running?() click to toggle source
# File lib/contracto/server/controller.rb, line 44
def contracto_server_running?
  uri = URI.parse("http://localhost:#{port}/contracto")
  Net::HTTP.get_response(uri).is_a?(Net::HTTPOK)
rescue Errno::ECONNREFUSED
  false
end
create_routes_from_contract() click to toggle source
# File lib/contracto/server/controller.rb, line 51
def create_routes_from_contract
  require_relative 'contract_routes'
end
root_dir_exists?() click to toggle source
# File lib/contracto/server/controller.rb, line 40
def root_dir_exists?
  Dir.exists?(Contracto::Config.root_dir)
end
start_daemon!() click to toggle source
# File lib/contracto/server/controller.rb, line 55
def start_daemon!
  Daemons.call(app_name: server_pidfile_name, dir: Contracto::Config.root_dir, dir_mode: :normal) do
    Contracto::Server.run!
  end
end
wait_until_server_is_running() click to toggle source
# File lib/contracto/server/controller.rb, line 61
def wait_until_server_is_running
  10.downto(0).each do |n|
    sleep 1
    puts "waiting for contracto server, #{n} tries left..."
    if contracto_server_running?
      puts '...contracto server is working'
      return true
    end
  end
  raise Contracto::CouldNotStartServer
end

Public Instance Methods

http_headers() click to toggle source
# File lib/contracto/server/contract_routes.rb, line 17
def http_headers
  env.select {|k,v| k.start_with? 'HTTP_'}
end