module Kennel::SettingsAsMethods::ClassMethods
Public Instance Methods
defaults(options)
click to toggle source
# File lib/kennel/settings_as_methods.rb, line 33 def defaults(options) options.each do |name, block| validate_setting_exist name define_method name, &block end end
settings(*names)
click to toggle source
# File lib/kennel/settings_as_methods.rb, line 12 def settings(*names) duplicates = (@settings & names) if duplicates.any? raise ArgumentError, "Settings #{duplicates.map(&:inspect).join(", ")} are already defined" end overrides = ((instance_methods - self::SETTING_OVERRIDABLE_METHODS) & names) if overrides.any? raise ArgumentError, "Settings #{overrides.map(&:inspect).join(", ")} are already used as methods" end @settings.concat names names.each do |name| next if method_defined?(name) define_method name do raise_with_location ArgumentError, "'#{name}' on #{self.class} was not set or passed as option" end end end
Private Instance Methods
inherited(child)
click to toggle source
Calls superclass method
# File lib/kennel/settings_as_methods.rb, line 48 def inherited(child) super child.instance_variable_set(:@settings, (@settings || []).dup) end
validate_setting_exist(name)
click to toggle source
# File lib/kennel/settings_as_methods.rb, line 42 def validate_setting_exist(name) return if !@settings || @settings.include?(name) supported = @settings.map(&:inspect) raise ArgumentError, "Unsupported setting #{name.inspect}, supported settings are #{supported.join(", ")}" end