class ActiveGenie::Configuration::ProvidersConfig
def default
def default @default || @all.values.find { |p| p.api_key }.class::NAME end
def initialize
def initialize @all = {} @default = nil end
def register(provider_class)
def register(provider_class) @all ||= {} name = provider_class::NAME @all[name] = provider_class.new define_singleton_method(name) do instance_variable_get("@#{name}") || instance_variable_set("@#{name}", @all[name]) end self end
def to_h(config = {})
def to_h(config = {}) hash_all = {} @all.each do |name, provider| hash_all[name] = provider.to_h(config.dig(name) || {}) end hash_all end
def valid
def valid valid_provider_keys = @all.keys.select { |k| @all[k].valid? } @all.slice(*valid_provider_keys) end