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