class Configue::Setting
Public Class Methods
new(owner_class)
click to toggle source
# File lib/configue/setting.rb, line 9 def initialize(owner_class) @owner = owner_class @loader = YamlLoader.new end
Public Instance Methods
base_namespace(key=nil)
click to toggle source
# File lib/configue/setting.rb, line 14 def base_namespace(key=nil) @base_namespace = key if key @base_namespace end
base_namespace=(key)
click to toggle source
# File lib/configue/setting.rb, line 19 def base_namespace=(key) base_namespace(key) end
load!()
click to toggle source
# File lib/configue/setting.rb, line 67 def load! @owner.instance ? @owner.instance : @owner.new_container(load_sources) end
namespace(key=nil)
click to toggle source
# File lib/configue/setting.rb, line 23 def namespace(key=nil) @namespace = key if key @namespace end
namespace=(key)
click to toggle source
# File lib/configue/setting.rb, line 28 def namespace=(key) namespace(key) end
source_dir(*dirs)
click to toggle source
# File lib/configue/setting.rb, line 32 def source_dir(*dirs) @sources ||= [] @sources += dirs.map {|d| {dir: d}} unless dirs.empty? @sources end
source_dir=(dir)
click to toggle source
# File lib/configue/setting.rb, line 38 def source_dir=(dir) if dir.is_a?(Array) source_dir(*dir) else source_dir(dir) end end
source_file(*files)
click to toggle source
Specifies files that you want to load into your class.
You can call this method many times.
Arguments¶ ↑
-
files
: files that you want to load into your class.
# File lib/configue/setting.rb, line 53 def source_file(*files) @sources ||= [] @sources += files.map {|f| {file: f}} unless files.empty? @sources end
source_file=(file)
click to toggle source
# File lib/configue/setting.rb, line 59 def source_file=(file) if file.is_a?(Array) source_file(*file) else source_file(file) end end
Private Instance Methods
load_sources()
click to toggle source
# File lib/configue/setting.rb, line 72 def load_sources loader = SourceLoader.new(@loader, @sources, @namespace, @base_namespace) hash = loader.load hash = namespaced_hash(hash) if namespace hash end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/configue/setting.rb, line 88 def method_missing(name, *args, &block) access_name = @owner.config_method_name return super unless access_name instance = self.load! if instance[access_name] instance[access_name].__send__(name, *args, &block) else super end end
namespaced_hash(hash)
click to toggle source
# File lib/configue/setting.rb, line 79 def namespaced_hash(hash) space = namespace.to_s base = base_namespace.to_s result = {} result = Merger.merge(result, hash[base]) if base_namespace result = Merger.merge(result, hash[space]) if hash.key?(space) result end