class Gors::Server
Public Class Methods
new()
click to toggle source
# File lib/gors.rb, line 9 def initialize @settings = Settings.new @logger = Logger.new(@settings) @routesklass = Routes.new(@logger) end
Public Instance Methods
autoimport()
click to toggle source
# File lib/gors.rb, line 94 def autoimport Dir.glob("controllers/*").each do |file| require './'+file end Dir.glob("models/*").each do |file| require './'+file end end
call(env)
click to toggle source
# File lib/gors.rb, line 19 def call env if(@settings.errorhandler != nil) @errorhandler = Object.const_get(@settings.errorhandler).new else @errorhandler = Gors::DefaultErrorHandler.new end routesinfo = @routesklass.routes(env["REQUEST_PATH"]) controller = routesinfo[0] @logger.log controller.inspect matcheddata = routesinfo[1] if(controller == nil) if(@settings.server != "thin") response = ["<h1>404 Not Found</h1>"] else response = "<h1>404 Not Found</h1>" end return @errorhandler.call "404" end # if(controller.include? "Gors::") ctrl = controller.split("#") params = ctrl[1].split(":") req = Rack::Request.new(env) data = Model.new(req).call(params[1]) return ["200",{"Content-type" => "application/json"},[data]] end # Call the Controller request = Request.new request.request.params = Rack::Utils.parse_query(env["QUERY_STRING"]) if(matcheddata != nil) request.request.params.merge! (matcheddata) end request.request.params.default = "" infoctrl = controller.split("#") ctrl = Object.const_get(infoctrl[0]).new(request) response = ctrl.send(infoctrl[1]) if(@settings.server != "thin") response = [response] end [ctrl.info.response.status_code,ctrl.info.response.headers,response] end
routes(&block)
click to toggle source
# File lib/gors.rb, line 86 def routes &block @routesklass.instance_eval &block end
run()
click to toggle source
# File lib/gors.rb, line 15 def run end
settings() { |settings| ... }
click to toggle source
# File lib/gors.rb, line 90 def settings yield(@settings) end
start()
click to toggle source
# File lib/gors.rb, line 69 def start if(@settings.errorhandler != nil) @errorhandler = Object.const_get(@settings.errorhandler).new else @errorhandler = Gors::DefaultErrorHandler.new end if(@settings.daemon) puts "Sending Gors to background" system("kill `cat running.pid`") Process.daemon true File.write("running.pid",Process.pid) end @logger.log @routesklass.inspect Rack::Server.new({:app => self,:server => @settings.server, :Port => @settings.port}).start end