class Configue::Container
When you have such configuration files:
# config/accounts/admin_users.yml accounts: admin_users: - grumpy - sneezy # config/accounts/test_users.yml accounts: test_users: - sleepy - dopey
you can load them into your class in the following ways:
class Foo < Configue::Container config.source_dir "#{File.dirname(__FILE__)}/config" end Foo.accounts.admin_users # => ["grumpy", "sneezy"] Foo.accounts.test_users # => ["sleepy", "dopey"]
Public Class Methods
config()
click to toggle source
config
allows you to access the object for setting up container.
# File lib/configue/container.rb, line 56 def config @config_access_name = "config" @setting ||= Setting.new(ContainerAdapter.new(self)) end
config_setting()
click to toggle source
config_setting
is the same with config
.
# File lib/configue/container.rb, line 62 def config_setting @config_access_name = "config_setting" @setting ||= Setting.new(ContainerAdapter.new(self)) end
Private Class Methods
method_missing(name, *args, &block)
click to toggle source
# File lib/configue/container.rb, line 68 def method_missing(name, *args, &block) # makes @instance in this line. @setting.load! if @instance.respond_to?(:key?) and @instance.key?(name) @instance[name] else @instance.__send__(name, *args, &block) end end
Public Instance Methods
query(key=nil)
click to toggle source
When you do not know whether your setting object has keys that you want to specify and want to avoid NoMethodError
, you can use query
and retrieve
.
Foo.query("accounts.admin_users").retrieve # => ["grumpy", "sneezy"] Foo.query("users.admin_users").retrieve # => nil Foo.query[:accounts][:admin_users].retrieve # => ["grumpy", "sneezy"]
# File lib/configue/container.rb, line 48 def query(key=nil) q = Criteria.new(self) q = key.split('.').each.inject(q) {|c, k| c[k] } if key q end