mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
35 lines
783 B
Ruby
35 lines
783 B
Ruby
|
require "active_support/concern"
|
||
|
|
||
|
module ActiveSupport
|
||
|
module Configurable
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
module ClassMethods
|
||
|
def get_config
|
||
|
module_parts = name.split("::")
|
||
|
modules = [Object]
|
||
|
module_parts.each {|name| modules.push modules.last.const_get(name) }
|
||
|
modules.reverse_each do |mod|
|
||
|
return mod.const_get(:DEFAULT_CONFIG) if const_defined?(:DEFAULT_CONFIG)
|
||
|
end
|
||
|
{}
|
||
|
end
|
||
|
|
||
|
def config
|
||
|
self.config = get_config unless @config
|
||
|
@config
|
||
|
end
|
||
|
|
||
|
def config=(hash)
|
||
|
@config = ActiveSupport::OrderedOptions.new
|
||
|
hash.each do |key, value|
|
||
|
@config[key] = value
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def config
|
||
|
self.class.config
|
||
|
end
|
||
|
end
|
||
|
end
|