module Confo::SubconfigsManager
Public Instance Methods
subconfig(subconfig_name, options = nil, overrides = nil, &block)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 52 def subconfig(subconfig_name, options = nil, overrides = nil, &block) respond_to?(subconfig_name) ? send(subconfig_name, options, overrides, &block) : subconfig_internal(subconfig_name, options, overrides, &block) end
subconfig_exists?(subconfig_name)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 58 def subconfig_exists?(subconfig_name) subconfig_instances.exists?(subconfig_name) end
subconfigs()
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 44 def subconfigs unless @all_subconfigs_loaded self.class.subconfigs_options.each { |name, options| subconfig(name) } @all_subconfigs_loaded = true end subconfig_instances end
Protected Instance Methods
construct_subconfig(subconfig_class)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 87 def construct_subconfig(subconfig_class) subconfig_class.new end
guess_subconfig_class_name(subconfig_name)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 99 def guess_subconfig_class_name(subconfig_name) "#{subconfig_name.to_s.camelize}Config" end
subconfig_class(subconfig_name, subconfig_options)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 91 def subconfig_class(subconfig_name, subconfig_options) if class_name = subconfig_options[:class_name] class_name.camelize else guess_subconfig_class_name(subconfig_name) end.safe_constantize || subconfig_options.fetch(:fallback_class_name, 'Confo::Config').constantize end
subconfig_instances()
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 64 def subconfig_instances @subconfig_instances ||= Collection.new end
subconfig_internal(subconfig_name, options = nil, overrides = nil, &block)
click to toggle source
# File lib/confo/concerns/subconfigs_manager.rb, line 68 def subconfig_internal(subconfig_name, options = nil, overrides = nil, &block) unless subconfig_exists?(subconfig_name) # TODO Bugfix subconfig_options = self.class.subconfigs_options[subconfig_name].try(:dup) || {} subconfig_options.merge!(overrides) if overrides subconfig_class = Confo.call(self, :subconfig_class, subconfig_name, subconfig_options) subconfig_instance = Confo.call(self, :construct_subconfig, subconfig_class, subconfig_options) subconfig_instance.set(:name, subconfig_name) unless subconfig_instance.kind_of?(Collection) subconfig_instances.set(subconfig_name, subconfig_instance) end subconfig_instance = subconfig_instances.get(subconfig_name) subconfig_instance.set(options) if options subconfig_instance.configure(&block) if block subconfig_instance end