module Aerogel::Config

Public Class Methods

registered(app) click to toggle source

Configures application.

# File lib/aerogel/core/config.rb, line 17
def self.registered(app)
  app.set :root, Aerogel.application_path
  app.set :views, Aerogel.get_resource_paths( :views ).reverse
  app.set :erb, trim: '-', layout: "layouts/application.html".to_sym

  reset!(app)
  # Load configs
  Aerogel.get_resource_list( :config, '*.conf', app.environment ).each do |config_filename|
    Aerogel.config.load config_filename
  end
  # register reloader
  setup_reloader(app) if Aerogel.config.aerogel.reloader?

  # set :protection, true
  # set :protect_from_csrf, true
  app.enable :sessions
  if Aerogel.config.aerogel.sessions.domain?
    app.set :sessions, domain: Aerogel.config.aerogel.sessions.domain!
  end
  # TODO: demand to configure session secret on application level
  if Aerogel.config.aerogel.sessions.secret?
    app.set :session_secret, Aerogel.config.aerogel.sessions.secret!
  end

  app.use Rack::Protection::AuthenticityToken
  app.use Rack::Flash, :sweep => true
  app.helpers Sinatra::RedirectWithFlash

  app.register Sinatra::MultiRoute
end

Private Class Methods

reset!(app) click to toggle source

Resets loaded config files.

# File lib/aerogel/core/config.rb, line 52
def self.reset!(app)
  Aerogel.config.clear!
  Aerogel.config.aerogel.reloader = app.development?
end
setup_reloader(app) click to toggle source

Sets up reloader for config files.

# File lib/aerogel/core/config.rb, line 59
def self.setup_reloader(app)
  app.use Aerogel::Reloader, ->{
    Aerogel.get_resource_list( :config, '*.conf', app.environment )
  } do |files|
    # reset routes
    reset!(app)
    files.each do |filename|
      Aerogel.config.load filename
    end
  end
end