Class: Configurable

Inherits:
Object
  • Object
show all
Defined in:
lib/app.rb

Overview

Provides configuration via superclass. Inherit from Configurable, and you have a handy little DSL/class for assigning/accessing your app settings.

class App < Configurable
  config.launched_at = Time.now.utc
end

App.launched_at # => 2010-02-21 12:34:56 UTC

Configurable classes will warn you when you call undefined settings.

App.typo # => nil
warning: undefined setting `typo' for App:Class

If you don’t care about these warnings, just redefine the logger.

App.configure do
  config.logger = Logger.new nil
end

Direct Known Subclasses

App

Defined Under Namespace

Classes: Plugin

Class Method Summary collapse

Class Method Details

.[](key) ⇒ Object



27
28
29
30
31
32
# File 'lib/app.rb', line 27

def [](key)
  config.respond_to? key or
    logger.warn "warning: undefined setting `#{key}' for #{name}:Class"

  config.send key
end

.inspectObject



34
35
36
# File 'lib/app.rb', line 34

def inspect
  config.inspect.sub config.class.name, name
end

.loggerObject



38
39
40
41
42
43
# File 'lib/app.rb', line 38

def logger
  return config.logger if config.respond_to? :logger
  return @logger if defined? @logger
  @logger ||= Rails.logger if defined? Rails
  @logger ||= Logger.new STDERR
end

.respond_to_missing?(method_sym, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/app.rb', line 45

def respond_to_missing?(method_sym, include_private = false)
  config.respond_to?(method_sym.to_s.gsub(/\?$/, ''), include_private) || super
end