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