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