class WAB::Impl::Sinatra::Server
The Server
module provides a server start method.
Public Class Methods
start(shell)
click to toggle source
Start the server and set the mount points.
# File lib/wab/impl/sinatra/server.rb, line 12 def self.start(shell) set(:port, shell.http_port) set(:public_folder, 'public') set(:public_folder, File.expand_path(shell.http_dir)) set(:static, true) set(:logging, shell.logger.info?) shell.mounts.each { |hh| if hh.has_key?(:type) handler = WAB::Impl::Sinatra::Handler.new(shell, shell.create_controller(hh[:handler])) path = "#{shell.pre_path}/#{hh[:type]}" get(path) { handler.wab_call(request) } get(path+'/*') { handler.wab_call(request) } put(path) { handler.wab_call(request) } put(path+'/*') { handler.wab_call(request) } post(path) { handler.wab_call(request) } post(path+'/*') { handler.wab_call(request) } delete(path) { handler.wab_call(request) } delete(path+'/*') { handler.wab_call(request) } elsif hh.has_key?(:path) path = hh[:path] if path.empty? path = '/**' elsif '*' != path[-1] path << '/' unless '/' == path[-1] path << '**' end controller = shell.create_controller(hh[:handler]) post(path) { controller.call(request.env) } else raise WAB::Error.new("Invalid handle configuration. Missing path or type.") end } unless (shell.tql_path.nil? || shell.tql_path.empty?) tql_handler = WAB::Impl::Sinatra::TqlHandler.new(shell) post('/tql') { tql_handler.call(request) } end if shell.export_proxy exporter = WAB::Impl::Sinatra::ExportProxy.new(shell) get('/**') { exporter.call(request) } end trap 'INT' do server.shutdown end run! end