Sha256: b6fd8a6a7fd3e1b58f82266bf3424dfe7a47a841281b07534b831bc069e42911

Contents?: true

Size: 1.33 KB

Versions: 35

Compression:

Stored size: 1.33 KB

Contents

require 'active_support/concern'
require 'active_support/ordered_options'
require 'active_support/core_ext/kernel/singleton_class'
require 'active_support/core_ext/module/delegation'

module ActiveSupport
  module Configurable
    extend ActiveSupport::Concern

    module ClassMethods
      def config
        @_config ||= ActiveSupport::InheritableOptions.new(superclass.respond_to?(:config) ? superclass.config : {})
      end

      def configure
        yield config
      end

      # 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
      #
      def config_accessor(*names)
        names.each do |name|
          code, line = <<-RUBY, __LINE__ + 1
            def #{name}; config.#{name}; end
            def #{name}=(value); config.#{name} = value; end
          RUBY

          singleton_class.class_eval code, __FILE__, line
          class_eval code, __FILE__, line
        end
      end
    end

    def config
      @_config ||= ActiveSupport::InheritableOptions.new(self.class.config)
    end
  end
end

Version data entries

35 entries across 35 versions & 2 rubygems

Version Path
activesupport-3.0.20 lib/active_support/configurable.rb
activesupport-3.0.19 lib/active_support/configurable.rb
activesupport-3.0.18 lib/active_support/configurable.rb
activesupport-3.0.17 lib/active_support/configurable.rb
activesupport-3.0.16 lib/active_support/configurable.rb
activesupport-3.0.15 lib/active_support/configurable.rb
activesupport-3.0.14 lib/active_support/configurable.rb
activesupport-3.0.13 lib/active_support/configurable.rb
activesupport-3.0.13.rc1 lib/active_support/configurable.rb
activesupport-3.0.12 lib/active_support/configurable.rb
activesupport-3.0.12.rc1 lib/active_support/configurable.rb
activesupport-3.0.11 lib/active_support/configurable.rb
messagebus_ruby_api-0.4.7 spec/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/configurable.rb
messagebus_ruby_api-0.4.4 spec/ruby/1.9.1/gems/activesupport-3.0.9/lib/active_support/configurable.rb
activesupport-3.0.10 lib/active_support/configurable.rb
activesupport-3.0.10.rc1 lib/active_support/configurable.rb
activesupport-3.0.9 lib/active_support/configurable.rb
activesupport-3.0.9.rc5 lib/active_support/configurable.rb
activesupport-3.0.9.rc4 lib/active_support/configurable.rb
activesupport-3.0.9.rc3 lib/active_support/configurable.rb