# frozen_string_literal: true defmodule ActiveStorage.Service.Configurator do # attr_reader :configurations def build(service_name, configurations) do # new(configurations).instance_build(service_name) instance_build(service_name, configurations) end # def initialize(configurations) do def new(_configurations) do # @configurations = configurations.deep_symbolize_keys end def instance_build(_service_name, configurations) do # config = config_for(service_name.to_sym) resolve(configurations.service) # .build( # **config, configurator: self, name: service_name # ) end defp config_for(_name) do # configurations.fetch name do # raise "Missing configuration for the #{name.inspect} Active Storage service. Configurations available for #{configurations.keys.inspect}" # end end defp resolve(class_name) do class_name = class_name |> Macro.camelize() Module.concat(["ActiveStorage.Service.#{class_name}Service"]) # require "active_storage/service/#{class_name.to_s.underscore}_service" # ActiveStorage::Service.const_get(:"#{class_name.camelize}Service") # rescue LoadError # raise "Missing service adapter for #{class_name.inspect}" end end