Sha256: 480d7e613e6a3e79835d4bba8e756edb8cd1b3be150c3a299b695d3c5ffb16db
Contents?: true
Size: 1 KB
Versions: 4
Compression:
Stored size: 1 KB
Contents
# frozen_string_literal: true require "dry/system" Dry::Effects.load_extensions(:auto_inject) module Dry module Effects module System class AutoRegistrar < ::Dry::System::AutoRegistrar # Always memoize and freeze registered components def call(component_dir) component_dir.each_component do |component| next unless register_component?(component) container.register(component.key, memoize: true) { component.instance.freeze } end end end class Container < ::Dry::System::Container setting :auto_registrar, default: AutoRegistrar def self.injector(effects: true, **kwargs) if effects Dry::Effects.AutoInject(**kwargs) else super() end end def self.finalize! return self if finalized? super # Force all components to load each_key { resolve(_1) } self end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems