Sha256: c7e46fef94168bec18f155ba4a113da201fd8a95f56a32d8c7163578aafa3c78
Contents?: true
Size: 1.3 KB
Versions: 2
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true require 'dry/plugins/config' require 'dry/plugins/registry/load_error' require 'dry/container/resolver' require 'inflecto' module Dry module Plugins class Registry # Default resolver for resolving plugins from registry class Resolver < Dry::Container::Resolver # Resolve a plugin from the registry # # @param container [Concurrent::Hash] # The container # @param name [Mixed] # The name for the plugin you wish to resolve # # @raise [LoadError] # If the given plugin is not registered in the registry # # @return [Mixed] # # @api public # If the registered plugin already exists, use it. # Otherwise, require it and return it. # This raises a LoadError if such a plugin doesn't exist, or a LoadError if it exists but it does # not register itself correctly. def call(container, name, require_path) name = name.to_s unless container.key?(name) path = Inflecto.underscore(name).tr('.', '/') require "#{require_path}/#{path}" raise LoadError, name, container unless container.key?(name) end super(container, name) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-plugins-0.2.0 | lib/dry/plugins/registry/resolver.rb |
dry-plugins-0.1.0 | lib/dry/plugins/registry/resolver.rb |