lib/dry/system/container.rb in dry-system-0.19.2 vs lib/dry/system/container.rb in dry-system-0.20.0

- old
+ new

@@ -5,10 +5,11 @@ require "dry-auto_inject" require "dry-configurable" require "dry-container" require "dry/inflector" +require "dry/core/constants" require "dry/core/deprecations" require "dry/system" require "dry/system/errors" require "dry/system/booter" @@ -71,21 +72,21 @@ extend Dry::Configurable extend Dry::Container::Mixin extend Dry::System::Plugins setting :name - setting(:root, Pathname.pwd.freeze) { |path| Pathname(path) } - setting :system_dir, "system" - setting :bootable_dirs, ["system/boot"] - setting :registrations_dir, "container" - setting :component_dirs, Config::ComponentDirs.new, cloneable: true - setting :inflector, Dry::Inflector.new - setting :booter, Dry::System::Booter - setting :auto_registrar, Dry::System::AutoRegistrar - setting :manual_registrar, Dry::System::ManualRegistrar - setting :importer, Dry::System::Importer - setting(:components, {}, reader: true, &:dup) + setting :root, default: Pathname.pwd.freeze, constructor: -> path { Pathname(path) } + setting :system_dir, default: "system" + setting :bootable_dirs, default: ["system/boot"] + setting :registrations_dir, default: "container" + setting :component_dirs, default: Config::ComponentDirs.new, cloneable: true + setting :inflector, default: Dry::Inflector.new + setting :booter, default: Dry::System::Booter + setting :auto_registrar, default: Dry::System::AutoRegistrar + setting :manual_registrar, default: Dry::System::ManualRegistrar + setting :importer, default: Dry::System::Importer + setting :components, default: {}, reader: true, constructor: :dup.to_proc class << self def strategies(value = nil) if value @strategies = value @@ -99,16 +100,15 @@ # Define a new configuration setting # # @see https://dry-rb.org/gems/dry-configurable # # @api public - def setting(name, *args, &block) - super(name, *args, &block) + def setting(name, default = Dry::Core::Constants::Undefined, **options, &block) + super(name, default, **options, &block) # TODO: dry-configurable needs a public API for this config._settings << _settings[name] self end - ruby2_keywords(:setting) if respond_to?(:ruby2_keywords, true) # Configures the container # # @example # class MyApp < Dry::System::Container