Skip to content

Commit

Permalink
Simplify ProviderRegistrar methods
Browse files Browse the repository at this point in the history
  • Loading branch information
timriley committed Jan 11, 2022
1 parent 27f8087 commit 65456b3
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 34 deletions.
2 changes: 1 addition & 1 deletion lib/dry/system/container.rb
Expand Up @@ -617,7 +617,7 @@ def load_component(key)
return self if registered?(key)

if (provider = providers.find_and_load_provider(key))
providers.start(provider)
provider.start
return self
end

Expand Down
47 changes: 14 additions & 33 deletions lib/dry/system/provider_registrar.rb
Expand Up @@ -77,7 +77,7 @@ def find_and_load_provider(name)
# @api private
def start_provider_dependency(component)
if (provider = find_and_load_provider(component.root_key))
start(provider.name)
provider.start
end
end

Expand Down Expand Up @@ -116,9 +116,7 @@ def finalize!
load_provider(path)
end

providers.each_value do |provider|
start(provider)
end
providers.each_value(&:start)

freeze
end
Expand All @@ -132,53 +130,36 @@ def finalize!

# @api private
def shutdown
providers.values.each do |provider|
stop(provider)
end

providers.each_value(&:stop)
self
end

# @api private
def prepare(name_or_provider)
with_provider(name_or_provider) do |provider|
provider.prepare
end

def prepare(provider_name)
with_provider(provider_name, &:prepare)
self
end

# @api private
def start(name_or_provider)
with_provider(name_or_provider) do |provider|
provider.start
end

def start(provider_name)
with_provider(provider_name, &:start)
self
end

# @api private
def stop(name_or_provider)
with_provider(name_or_provider) do |provider|
provider.stop
end

def stop(provider_name)
with_provider(provider_name, &:stop)
self
end

private

def with_provider(id_or_provider)
provider =
case id_or_provider
when Provider
id_or_provider
when Symbol
require_provider_file(id_or_provider) unless providers.key?(id_or_provider)
providers[id_or_provider]
end
def with_provider(provider_name)
require_provider_file(provider_name) unless providers.key?(provider_name)

provider = providers[provider_name]

raise ProviderNotFoundError, id_or_provider unless provider
raise ProviderNotFoundError, provider_name unless provider

yield(provider)
end
Expand Down

0 comments on commit 65456b3

Please sign in to comment.