module Fuguta::Configuration::ConfigurationMethods::ClassMethods
Public Instance Methods
configuration_class()
click to toggle source
# File lib/fuguta.rb, line 196 def configuration_class ConfigurationMethods.find_configuration_class(self) end
def_configuration(&blk)
click to toggle source
Helper method to define class specific configuration class.
def_configuration
(&blk) is available when you include this module
# Example: class Base
include Fuguta::Configuration::ConfigurationMethods def_configuration do param :xxxx param :yyyy end
end
Above example does exactly same thing as below:
class Base
class Configuration < Fuguta::Configuration param :xxxx param :yyyy end @configuration_class = Configuration
end
# Examples for new classes of Base inheritance. class A < Base
def_configuration do param :zzzz end def_configuration do param :xyxy end p Configuration # => A::Configuration p Configuration.superclass # => Base::Configuration p @configuration_class # => A::Configuration
end
class B < A
p self.configuration_class # => A::Configuration
end
# File lib/fuguta.rb, line 181 def def_configuration(&blk) # create new configuration class if not exist. if self.const_defined?(:Configuration, false) unless self.const_get(:Configuration, false) < Fuguta::Configuration raise TypeError, "#{self}::Configuration constant is defined already for another purpose." end else self.const_set(:Configuration, Class.new(self.configuration_class || Fuguta::Configuration)) @configuration_class = self.const_get(:Configuration, false) end if blk @configuration_class.module_eval(&blk) end end