def method_missing(method_name, *args, &block)
if owner.has_config_method?(method_name)
attribute = method_name.to_s.tr('=','').to_sym
if method_name.to_s =~ /=$/ && owner.has_config_method?(attribute)
owner.set_config_value(attribute, args.first)
else
owner.send(method_name, *args, &block)
end
elsif nested_configurable?(method_name)
owner.send(method_name)
else
raise BadConfigAttribute, "You tried to configure using '#{method_name.inspect}', but the valid config attributes are #{owner.config_methods.map{|a| %('#{a.inspect}') }.sort.join(', ')}"
end
end