Module: ActiveSupport::Configurable::ClassMethods

Defined in:
activesupport/lib/active_support/configurable.rb

Instance Method Summary collapse

Instance Method Details

#configObject


29
30
31
32
33
34
35
36
# File 'activesupport/lib/active_support/configurable.rb', line 29

def config
  @_config ||= if respond_to?(:superclass) && superclass.respond_to?(:config)
    superclass.config.inheritable_copy
  else
    # create a new "anonymous" class that will host the compiled reader methods
    Class.new(Configuration).new
  end
end

#config_accessor(*names) ⇒ Object

Allows you to add shortcut so that you don't have to refer to attribute through config. Also look at the example for config to contrast.

class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access
end

user = User.new
user.allowed_access = true
user.allowed_access # => true

54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'activesupport/lib/active_support/configurable.rb', line 54

def config_accessor(*names)
  options = names.extract_options!

  names.each do |name|
    reader, line = "def #{name}; config.#{name}; end", __LINE__
    writer, line = "def #{name}=(value); config.#{name} = value; end", __LINE__

    singleton_class.class_eval reader, __FILE__, line
    singleton_class.class_eval writer, __FILE__, line
    class_eval reader, __FILE__, line unless options[:instance_reader] == false
    class_eval writer, __FILE__, line unless options[:instance_writer] == false
  end
end

#configure {|config| ... } ⇒ Object

Yields:


38
39
40
# File 'activesupport/lib/active_support/configurable.rb', line 38

def configure
  yield config
end