class Perc::Application

Class for holding stuff you might find in a typical application

Constants

LoggerLevels

Attributes

env[R]
logger[R]
root[R]

Public Class Methods

new(options) click to toggle source
# File lib/perc/application.rb, line 34
def initialize(options)
  @root = options.fetch(:root)
  @env = ActiveSupport::StringInquirer.new(options.fetch(:env))
  config do |c|
    Dir[root.join('app', '*')].each do |d|
      c.autoload_paths << d.to_s
    end
  end
end

Public Instance Methods

boot() click to toggle source
# File lib/perc/application.rb, line 70
def boot
  initialize_logging
  setup_autoload_directories
  require_environment
  run_initializers
end
commands() { |cli| ... } click to toggle source
# File lib/perc/application.rb, line 83
def commands
  require 'perc/cli_wrapper'
  cli = CliWrapper.new
  yield(cli) if block_given?
  cli
end
config() { |config| ... } click to toggle source
# File lib/perc/application.rb, line 77
def config
  @config ||= Config.new
  yield(@config) if block_given?
  @config
end
config_for(thing, required = true) click to toggle source
# File lib/perc/application.rb, line 57
def config_for(thing, required = true)
  file = root.join('config', "#{thing}.yml")
  if file.exist?
    require 'yaml'
    require 'erb'
    thing_parsed = (YAML.load(ERB.new(file.read).result) || {})[env]
    return (thing_parsed and thing_parsed.with_indifferent_access) unless (thing_parsed.nil? && required)
    raise Config::EnvironmentMissingError, "config_for(#{thing}) nil for env: #{env}"
  else
    raise Config::FileMissingError, "Could not load configuration. No such file: #{file}"
  end
end
env=(string) click to toggle source
# File lib/perc/application.rb, line 44
def env=(string)
  @env = ActiveSupport::StringInquirer.new(string)
end
load_rake() click to toggle source
# File lib/perc/application.rb, line 48
def load_rake
  rake_files = Dir[File.expand_path('../tasks/*.rake', __FILE__)] +
    Dir[root.join('lib/tasks/*.rake')]

  rake_files.each do |f|
    load(f)
  end
end

Private Instance Methods

initialize_logging() click to toggle source
# File lib/perc/application.rb, line 102
def initialize_logging
  @logger = Logger.new(test? ? 'log/test.log' : STDERR)
  @logger.level = LoggerLevels[ENV.fetch('PERC_LOG_LEVEL', 'DEBUG')]
end
require_environment() click to toggle source
# File lib/perc/application.rb, line 107
def require_environment
  require root.join('config', 'environments', env).to_s
end
run_initializers() click to toggle source
# File lib/perc/application.rb, line 92
def run_initializers
  Dir[root.join('config', 'initializers', '*.rb')].each do |f|
    require f
  end
end
setup_autoload_directories() click to toggle source
# File lib/perc/application.rb, line 98
def setup_autoload_directories
  ActiveSupport::Dependencies.autoload_paths = config.autoload_paths
end