class Rory::Application

Main application superclass. Applications should subclass this class, but currently no additional configuration is needed - just run '#spin_up' to connect the database so Sequel can do its magic.

Attributes

root[R]
config_path[RW]
db[R]
db_config[R]

Public Class Methods

inherited(subclass) click to toggle source
Calls superclass method
# File lib/rory/application.rb, line 25
def inherited(subclass)
  super
  Rory.application = subclass.instance
end
initializer_default_middleware() click to toggle source
# File lib/rory/application.rb, line 52
def initializer_default_middleware
  Rory::Application.initializers.add "rory.request_middleware" do |app|
    app.request_middleware
  end
end
initializers() click to toggle source

@return [Rory::Initializers]

# File lib/rory/application.rb, line 35
def initializers
  @initializers ||= Initializers.new
end
instance() click to toggle source
# File lib/rory/application.rb, line 44
def instance
  @instance ||= new
end
method_missing(*args, &block) click to toggle source
# File lib/rory/application.rb, line 30
def method_missing(*args, &block)
  instance.send(*args, &block)
end
respond_to?(method, private=false) click to toggle source
Calls superclass method
# File lib/rory/application.rb, line 39
def respond_to?(method, private=false)
  return true if instance.respond_to?(method)
  super
end
root=(root_path) click to toggle source
# File lib/rory/application.rb, line 48
def root=(root_path)
  $:.unshift @root = Pathname.new(root_path).realpath
end

Public Instance Methods

auto_require_paths() click to toggle source
# File lib/rory/application.rb, line 61
def auto_require_paths
  @auto_require_paths ||= %w(config/initializers models controllers helpers)
end
call(env) click to toggle source
# File lib/rory/application.rb, line 178
def call(env)
  stack.call(env)
end
configure() { |self| ... } click to toggle source
# File lib/rory/application.rb, line 98
def configure
  yield self
end
connect_db(environment = ENV['RORY_ENV']) click to toggle source
# File lib/rory/application.rb, line 112
def connect_db(environment = ENV['RORY_ENV'])
  @db_config = load_config_data(:database)
  @db = Sequel.connect(@db_config[environment.to_s])
  @db.loggers << logger
end
dispatcher() click to toggle source
# File lib/rory/application.rb, line 126
def dispatcher
  Rory::Dispatcher.rack_app(self)
end
filter_parameters(*params) click to toggle source
# File lib/rory/application.rb, line 143
def filter_parameters(*params)
  reset_stack
  @parameters_to_filter = params
end
load_config_data(config_type) click to toggle source
# File lib/rory/application.rb, line 106
def load_config_data(config_type)
  YAML.load_file(
    File.expand_path(File.join(config_path, "#{config_type}.yml"))
  )
end
log_file() click to toggle source
# File lib/rory/application.rb, line 182
def log_file
  Dir.mkdir(log_path) unless File.exists?(log_path)
  File.open(log_path.join("#{ENV['RORY_ENV']}.log"), 'a').tap { |file| file.sync = true }
end
log_path() click to toggle source
# File lib/rory/application.rb, line 83
def log_path
  @log_path ||= root_path.join('log')
end
logger() click to toggle source
# File lib/rory/application.rb, line 187
def logger
  @logger ||= Logger.new(log_file)
end
middleware() click to toggle source
# File lib/rory/application.rb, line 122
def middleware
  @middleware ||= MiddlewareStack.new
end
parameters_to_filter() click to toggle source
# File lib/rory/application.rb, line 139
def parameters_to_filter
  @parameters_to_filter || [:password]
end
request_logging_on?() click to toggle source
# File lib/rory/application.rb, line 130
def request_logging_on?
  @request_logging != false
end
request_middleware() click to toggle source
# File lib/rory/application.rb, line 156
def request_middleware
  return unless request_logging_on?
  use_middleware Rory::RequestId, :uuid_prefix => uuid_prefix
  use_middleware Rack::PostBodyContentTypeParser
  use_middleware Rack::CommonLogger, logger
  use_middleware Rory::RequestParameterLogger, logger, :filters => parameters_to_filter
end
require_all_files() click to toggle source
# File lib/rory/application.rb, line 65
def require_all_files
  auto_require_paths.each do |path|
    Rory::Support.require_all_files_in_directory root_path.join(path)
  end
end
reset_stack() click to toggle source
# File lib/rory/application.rb, line 148
def reset_stack
  @stack = nil
end
root() click to toggle source
# File lib/rory/application.rb, line 71
def root
  self.class.root
end
root_path() click to toggle source
# File lib/rory/application.rb, line 75
def root_path
  root || raise(RootNotConfigured, "#{self.class.name} has no root configured")
end
routes() click to toggle source
# File lib/rory/application.rb, line 91
def routes
  unless @routes
    load(File.join(config_path, 'routes.rb'))
  end
  @routes
end
run_initializers() click to toggle source
# File lib/rory/application.rb, line 164
def run_initializers
  Rory::Application.initializers.run(self)
end
set_routes(&block) click to toggle source
# File lib/rory/application.rb, line 87
def set_routes(&block)
  @routes = RouteMapper.set_routes(&block)
end
spin_up() click to toggle source
# File lib/rory/application.rb, line 102
def spin_up
  connect_db
end
stack() click to toggle source
# File lib/rory/application.rb, line 168
def stack
  @stack ||= Rack::Builder.new.tap { |builder|
    run_initializers
    middleware.each do |m|
      builder.use m.klass, *m.args, &m.block
    end
    builder.run dispatcher
  }
end
turn_off_request_logging!() click to toggle source
# File lib/rory/application.rb, line 134
def turn_off_request_logging!
  reset_stack
  @request_logging = false
end
use_middleware(*args, &block) click to toggle source
# File lib/rory/application.rb, line 118
def use_middleware(*args, &block)
  middleware.use *args, &block
end
uuid_prefix() click to toggle source
# File lib/rory/application.rb, line 152
def uuid_prefix
  Support.tokenize(self.class.name.gsub("::Application", ""))
end