lib/dry/effects/extensions/system.rb in dry-effects-0.1.5 vs lib/dry/effects/extensions/system.rb in dry-effects-0.2.0
- old
+ new
@@ -1,25 +1,26 @@
# frozen_string_literal: true
-require 'dry/system/container'
+require "dry/system/container"
Dry::Effects.load_extensions(:auto_inject)
module Dry
module Effects
module System
class AutoRegistrar < ::Dry::System::AutoRegistrar
- def call(dir)
- super do |config|
- config.memoize = true
- config.instance { |c| c.instance.freeze }
- yield(config) if block_given?
+ # Always memoize and freeze registered components
+ def call(component_dir)
+ components(component_dir).each 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, AutoRegistrar
+ config.auto_registrar = AutoRegistrar
def self.injector(effects: true, **kwargs)
if effects
Dry::Effects.AutoInject(**kwargs)
else