class Orbit::Application

Attributes

builder[R]

Public Class Methods

config() click to toggle source
# File lib/orbit.rb, line 51
def self.config
  @config ||= Orbit::Config.instance
end
configure() { |config| ... } click to toggle source
# File lib/orbit.rb, line 59
def self.configure
  yield config
end
new() click to toggle source
# File lib/orbit.rb, line 13
def initialize
  instantiate

  setup_builder
  load_middleware

  loader = Loaders::DirectoryLoader.load
  @reloader = loader.reloader
end
start() click to toggle source
# File lib/orbit.rb, line 63
def self.start
  instance || new

  instance.start
end

Public Instance Methods

call(env) click to toggle source
# File lib/orbit.rb, line 74
def call(env)
  @reloader.reload
  @request = config.request_class.new(env)
  verb = @request.request_method
  requested_path = @request.path_info

  route = Config.router_class.match(verb, requested_path)

  if route
    intercepted = Interceptors::List.intercept_path(@request)

    return intercepted if intercepted

    route_params = route[:route].path.get_params(requested_path) || {}

    @request.params.merge!(route_params)

    begin
      route[:class].execute_action(@request, route[:action])
    rescue Exception => exception
      Config.response_class.server_error(exception, verb, requested_path)
    end
  else
    Config.response_class.not_found(verb, requested_path)
  end
end
config() click to toggle source
# File lib/orbit.rb, line 55
def config
  self.class.config
end
load_middleware() click to toggle source
# File lib/orbit.rb, line 27
def load_middleware
  builder.use Rack::MethodOverride
  builder.use Rack::Head
  builder.use Rack::Static, :urls => Config.static_files_path
  builder.use config.rack_logger_class

  use_session(config.session_options)
  use_protection
end
setup_builder() click to toggle source
# File lib/orbit.rb, line 23
def setup_builder
  @builder = Rack::Builder.new
end
start() click to toggle source
# File lib/orbit.rb, line 69
def start
  builder.run self
  builder
end
use_protection() click to toggle source
# File lib/orbit.rb, line 43
def use_protection
  options = {}
  options[:except] = Array options[:except]
  options[:except] += [:session_hijacking, :remote_token]
  options[:reaction] ||= :drop_session
  builder.use Rack::Protection, options
end
use_session(options) click to toggle source
# File lib/orbit.rb, line 37
def use_session(options)
  options[:secret] = config.session_secret

  builder.use Rack::Session::Cookie, options
end