Skip to content

Commit

Permalink
Remove all deprecated functionality and deprecation messages (#255)
Browse files Browse the repository at this point in the history
  • Loading branch information
timriley authored Oct 26, 2022
1 parent 64fcaf6 commit 90dcc88
Show file tree
Hide file tree
Showing 25 changed files with 12 additions and 971 deletions.
29 changes: 1 addition & 28 deletions lib/dry/system.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,6 @@ def self.register_provider_sources(path)
provider_sources.load_sources(path)
end

def self.register_provider(_name, options)
Dry::Core::Deprecations.announce(
"Dry::System.register_provider",
"Use `Dry::System.register_provider_sources` instead",
tag: "dry-system",
uplevel: 1
)

register_provider_sources(options.fetch(:path))
end

# Registers a provider source, which can be used as the basis for other providers
#
# @api public
Expand All @@ -49,26 +38,10 @@ def self.register_provider_source(name, group:, source: nil, &block)
if source
provider_sources.register(name: name, group: group, source: source)
else
provider_sources.register_from_block(
name: name,
group: group,
target_container: self,
&block
)
provider_sources.register_from_block(name: name, group: group, &block)
end
end

def self.register_component(name, provider:, &block)
Dry::Core::Deprecations.announce(
"Dry::System.register_component",
"Use `Dry::System.register_provider_source` instead",
tag: "dry-system",
uplevel: 1
)

register_provider_source(name, group: provider, &block)
end

# @api private
def self.provider_sources
@provider_sources ||= ProviderSourceRegistry.new
Expand Down
10 changes: 0 additions & 10 deletions lib/dry/system/components.rb

This file was deleted.

34 changes: 0 additions & 34 deletions lib/dry/system/config/component_dir.rb
Original file line number Diff line number Diff line change
Expand Up @@ -190,40 +190,6 @@ class ComponentDir
# @api public
setting :add_to_load_path, default: true

# @api public
def default_namespace=(namespace)
Dry::Core::Deprecations.announce(
"Dry::System::Config::ComponentDir#default_namespace=",
"Add a namespace instead: `dir.namespaces.add #{namespace.to_s.inspect}, key: nil`",
tag: "dry-system",
uplevel: 1
)

# We don't have the configured separator here, so the best we can do is guess
# that it's a dot
namespace_path = namespace.gsub(".", PATH_SEPARATOR)

return if namespaces.namespaces[namespace_path]

namespaces.add namespace_path, key: nil
end

# @api public
def default_namespace
Dry::Core::Deprecations.announce(
"Dry::System::Config::ComponentDir#default_namespace",
"Use namespaces instead, e.g. `dir.namespaces`",
tag: "dry-system",
uplevel: 1
)

ns_path = namespaces.to_a.reject(&:root?).first&.path

# We don't have the configured separator here, so the best we can do is guess
# that it's a dot
ns_path&.gsub(PATH_SEPARATOR, ".")
end

# @!endgroup

# Returns the component dir path, relative to the configured container root
Expand Down
14 changes: 1 addition & 13 deletions lib/dry/system/config/namespaces.rb
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,7 @@ def namespace(path)
# @return [Namespace, nil] the root namespace, if configured
#
# @api public
def root(**options)
if options.any?
Dry::Core::Deprecations.announce(
"Dry::System::Config::Namespaces#root (with arguments)",
"Use `#add_root(key: nil, const: nil)` instead",
tag: "dry-system",
uplevel: 1
)

add_root(**options)
return
end

def root
namespaces[Namespace::ROOT_PATH]
end

Expand Down
45 changes: 1 addition & 44 deletions lib/dry/system/container.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ class Container
setting :name
setting :root, default: Pathname.pwd.freeze, constructor: ->(path) { Pathname(path) }
setting :provider_dirs, default: ["system/providers"]
setting :bootable_dirs # Deprecated for provider_dirs, see .provider_paths below
setting :registrations_dir, default: "system/registrations"
setting :component_dirs, default: Config::ComponentDirs.new, cloneable: true
setting :exports, reader: true
Expand All @@ -73,8 +72,6 @@ class Container
config.namespace_separator = KEY_SEPARATOR

class << self
extend Dry::Core::Deprecations["Dry::System::Container"]

# @!method config
# Returns the configuration for the container
#
Expand Down Expand Up @@ -179,27 +176,9 @@ def configured?
# been finalized
#
# @api public
def import(keys: nil, from: Undefined, as: Undefined, **deprecated_import_hash)
def import(from:, as:, keys: nil)
raise Dry::System::ContainerAlreadyFinalizedError if finalized?

if deprecated_import_hash.any?
Dry::Core::Deprecations.announce(
"Dry::System::Container.import with {namespace => container} hash",
"Use Dry::System::Container.import(from: container, as: namespace) instead",
tag: "dry-system",
uplevel: 1
)

deprecated_import_hash.each do |namespace, container|
importer.register(container: container, namespace: namespace)
end
return self
elsif from == Undefined || as == Undefined
# These keyword arguments can become properly required in the params list once
# we remove the deprecation shim above
raise ArgumentError, "required keyword arguments: :from, :as"
end

importer.register(container: from, namespace: as, keys: keys)

self
Expand Down Expand Up @@ -298,26 +277,6 @@ def register_provider(...)

# rubocop:enable Layout/LineLength

# @see .register_provider
# @api public
def boot(name, **opts, &block)
Dry::Core::Deprecations.announce(
"Dry::System::Container.boot",
"Use `Dry::System::Container.register_provider` instead",
tag: "dry-system",
uplevel: 1
)

register_provider(
name,
namespace: opts[:namespace],
from: opts[:from],
source: opts[:key],
&block
)
end
deprecate :finalize, :boot

# Return if a container was finalized
#
# @return [TrueClass, FalseClass]
Expand Down Expand Up @@ -410,7 +369,6 @@ def prepare(name)
providers.prepare(name)
self
end
deprecate :init, :prepare

# Stop a specific component but calls only `stop` lifecycle trigger
#
Expand Down Expand Up @@ -570,7 +528,6 @@ def component_dirs
def providers
@providers ||= config.provider_registrar.new(self)
end
deprecate :booter, :providers

# @api private
def auto_registrar
Expand Down
6 changes: 0 additions & 6 deletions lib/dry/system/errors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

module Dry
module System
extend Dry::Core::Deprecations["dry-system"]

# Error raised when import is called on an already finalized container
#
# @api public
Expand Down Expand Up @@ -48,8 +46,6 @@ def initialize(provider_name)
super("Provider #{provider_name.inspect} has already been registered")
end
end
DuplicatedComponentKeyError = ProviderAlreadyRegisteredError
deprecate_constant :DuplicatedComponentKeyError

# Error raised when a named provider could not be found
#
Expand All @@ -59,8 +55,6 @@ def initialize(name)
super("Provider #{name.inspect} not found")
end
end
InvalidComponentError = ProviderNotFoundError
deprecate_constant :InvalidComponentError

# Error raised when a named provider source could not be found
#
Expand Down
54 changes: 3 additions & 51 deletions lib/dry/system/provider/source.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ class << self
# @see Dry::System::Provider::SourceDSL
#
# @api private
def for(name:, group: nil, target_container:, &block) # rubocop:disable Style/KeywordParametersOrder
def for(name:, group: nil, &block)
Class.new(self) { |klass|
klass.source_name name
klass.source_group group
SourceDSL.evaluate(klass, target_container, &block) if block
SourceDSL.evaluate(klass, &block) if block
}
end

Expand Down Expand Up @@ -183,21 +183,6 @@ def start; end
# @api public
def stop; end

def use(*provider_names)
Dry::Core::Deprecations.announce(
"Dry::System::Provider#use",
"Use `target_container.start` instead, e.g. `target_container.start(:another_provider)`", # rubocop:disable Layout/LineLength
tag: "dry-system",
uplevel: 1
)

provider_names.each do |name|
target_container.start(name)
end

self
end

# Registers a "before" callback for the given lifecycle step.
#
# The given block will be run before the lifecycle step method is run. The block
Expand All @@ -212,17 +197,6 @@ def use(*provider_names)
#
# @api public
def before(step_name, &block)
if step_name.to_sym == :init
Dry::Core::Deprecations.announce(
"Dry::System::Provider before(:init) callback",
"Use `before(:prepare)` callback instead",
tag: "dry-system",
uplevel: 1
)

step_name = :prepare
end

callbacks[:before][step_name] << block
self
end
Expand All @@ -241,36 +215,14 @@ def before(step_name, &block)
#
# @api public
def after(step_name, &block)
if step_name.to_sym == :init
Dry::Core::Deprecations.announce(
"Dry::System::Provider after(:init) callback",
"Use `after(:prepare)` callback instead",
tag: "dry-system",
uplevel: 1
)

step_name = :prepare
end

callbacks[:after][step_name] << block
self
end

# @api private
def run_callback(hook, step)
callbacks[hook][step].each do |callback|
if callback.parameters.any?
Dry::Core::Deprecations.announce(
"Dry::System::Provider::Source.before and .after callbacks with single block parameter", # rubocop:disable Layout/LineLength
"Use `provider_container` (or `container` for short) inside your block instead",
tag: "dry-system",
uplevel: 1
)

instance_exec(provider_container, &callback)
else
instance_eval(&callback)
end
instance_eval(&callback)
end
end

Expand Down
41 changes: 2 additions & 39 deletions lib/dry/system/provider/source_dsl.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,8 @@ class Provider
#
# @api private
class SourceDSL
extend Dry::Core::Deprecations["Dry::System::Provider::SourceDSL"]

def self.evaluate(source_class, target_container, &block)
if block.parameters.any?
Dry::Core::Deprecations.announce(
"Dry::System.register_provider with single block parameter",
"Use `target_container` (or `target` for short) inside your block instead",
tag: "dry-system"
)
new(source_class).instance_exec(target_container, &block)
else
new(source_class).instance_eval(&block)
end
def self.evaluate(source_class, &block)
new(source_class).instance_eval(&block)
end

attr_reader :source_class
Expand All @@ -35,35 +24,9 @@ def setting(...)
source_class.setting(...)
end

# rubocop:disable Layout/LineLength

def settings(&block)
Dry::Core::Deprecations.announce(
"Dry::System.register_provider with nested settings block",
"Use individual top-level `setting` declarations instead (see dry-configurable docs for details)",
tag: "dry-system",
uplevel: 1
)

DeprecatedSettingsDSL.new(self).instance_eval(&block)
end

# rubocop:enable Layout/LineLength

class DeprecatedSettingsDSL
def initialize(base_dsl)
@base_dsl = base_dsl
end

def key(name, type)
@base_dsl.setting(name, constructor: type)
end
end

def prepare(&block)
source_class.define_method(:prepare, &block)
end
deprecate :init, :prepare

def start(&block)
source_class.define_method(:start, &block)
Expand Down
Loading

0 comments on commit 90dcc88

Please sign in to comment.