class GrapeApe::Goliath::Server
Public Instance Methods
setup_amqp()
click to toggle source
# File lib/grape_ape/goliath/server.rb, line 49 def setup_amqp config['grape_amqp_conn'] = AMQP.connect(on_possible_authentication_failure: Proc.new { |settings| logger.info "Authentication failed, as expected, settings are: #{settings.inspect}" EM.stop }) config['grape_amqp_channel'] = AMQP::Channel.new(config['grape_amqp_conn']) config['grape_amqp_exchange'] = config['grape_amqp_channel'].default_exchange config['grape_amqp_response_queue'] = SecureRandom.uuid config['grape_amqp_em_channel'] = EM::Channel.new q = config['grape_amqp_channel'].queue(config['grape_amqp_response_queue'], exclusive: true) q.subscribe do |meta, payload| config['grape_amqp_em_channel'].push({meta: meta, data: payload}) end end
start(&blk)
click to toggle source
# File lib/grape_ape/goliath/server.rb, line 6 def start(&blk) EM.epoll EM.synchrony do trap('INT') { stop } trap('TERM') { stop } if RUBY_PLATFORM !~ /mswin|mingw/ trap('HUP') { load_config(options[:config]) } end load_config(options[:config]) load_plugins setup_amqp EM.set_effective_user(options[:user]) if options[:user] config[::Goliath::Constants::GOLIATH_SIGNATURE] = EM.start_server(address, port, ::Goliath::Connection) do |conn| if options[:ssl] conn.start_tls( :private_key_file => options[:ssl_key], :cert_chain_file => options[:ssl_cert], :verify_peer => options[:ssl_verify] ) end conn.port = port conn.app = app conn.api = api conn.logger = logger conn.status = status conn.config = config conn.options = options end blk.call(self) if blk end end
stop()
click to toggle source
# File lib/grape_ape/goliath/server.rb, line 44 def stop logger.info('Stopping server...') config['grape_amqp_conn'].close { EM.stop } end