Module: ActiveSupport::Configurable::ClassMethods
| Relationships & Source Files | |
| Defined in: | activesupport/lib/active_support/configurable.rb | 
Instance Method Summary
- #config
- #configure {|config| ... }
- 
    
      #config_accessor(*names, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil)  
    
    private
    Allows you to add shortcut so that you don’t have to refer to attribute through config. 
Instance Method Details
#config
[ GitHub ]# File 'activesupport/lib/active_support/configurable.rb', line 30
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, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil) (private)
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.
Defines both class and instance config accessors.
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access
end
User.allowed_access # => nil
User.allowed_access = false
User.allowed_access # => false
user = User.new
user.allowed_access # => false
user.allowed_access = true
user.allowed_access # => true
User.allowed_access # => falseThe attribute name must be a valid method name in Ruby.
class User
  include ActiveSupport::Configurable
  config_accessor :"1_Badname"
end
# => NameError: invalid config attribute nameTo omit the instance writer method, pass instance_writer: false. To omit the instance reader method, pass instance_reader: false.
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access, instance_reader: false, instance_writer: false
end
User.allowed_access = false
User.allowed_access # => false
User.new.allowed_access = true # => NoMethodError
User.new.allowed_access        # => NoMethodErrorOr pass instance_accessor: false, to omit both instance methods.
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access, instance_accessor: false
end
User.allowed_access = false
User.allowed_access # => false
User.new.allowed_access = true # => NoMethodError
User.new.allowed_access        # => NoMethodErrorAlso you can pass default or a block to set up the attribute with a default value.
class User
  include ActiveSupport::Configurable
  config_accessor :allowed_access, default: false
  config_accessor :hair_colors do
    [:brown, :black, :blonde, :red]
  end
end
User.allowed_access # => false
User.hair_colors # => [:brown, :black, :blonde, :red]# File 'activesupport/lib/active_support/configurable.rb', line 111
def config_accessor(*names, instance_reader: true, instance_writer: true, instance_accessor: true, default: nil) # :doc: names.each do |name| raise NameError.new("invalid config attribute name") unless /\A[_A-Za-z]\w*\z/.match?(name) reader, reader_line = "def #{name}; config.#{name}; end", __LINE__ writer, writer_line = "def #{name}=(value); config.#{name} = value; end", __LINE__ singleton_class.class_eval reader, __FILE__, reader_line singleton_class.class_eval writer, __FILE__, writer_line if instance_accessor class_eval reader, __FILE__, reader_line if instance_reader class_eval writer, __FILE__, writer_line if instance_writer end send("#{name}=", block_given? ? yield : default) end end
#configure {|config| ... }
# File 'activesupport/lib/active_support/configurable.rb', line 39
def configure yield config end