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 |