require_relative 'base' require_relative 'postgres_cluster' require_relative 'preset_not_found' class Devops::StackPresetsFactory # find all classes in Devops::StackPresets modules excluding Base and factory. # This list can be extended in external gems via defining new classes in Devops::StackPresets module. def self.list @list ||= Devops::StackPresets.constants.select do |class_name| class_name != :Base end.map do |class_name| Devops::StackPresets.const_get(class_name).new end end def self.get(id) preset = list.detect { |preset| preset.id == id } raise PresetNotFound, "Preset '#{preset}' not found" unless preset preset end end