Examples:
Define a basic dependency.
class Orchestrator
include Plumbum::Consumer
include ApplicationProvider
dependency :application
end
Orchestrator.new.application
Define an aliased dependency.
class Orchestrator
include Plumbum::Consumer
include ApplicationProvider
dependency :application, as: :app
end
Orchestrator.new.app
Define an optional dependency.
class BillCustomer
include Plumbum::Consumer
dependency :rewards
end
class BillRewardsCustomer < BillCustomer
include RewardsProvider
end
BillCustomer.new.rewards
BillRewardsCustomer.new.rewards
Define an unmemoized dependency.
class Action
include Plumbum::Consumer
include RequestProvider
dependency :request, memoize: false
end
action = Action.new
action.request
request = Request.new
RequestProvider.value = request
action.request
Define a dependency with scoped key.
class Client
include Plumbum::Consumer
include ConfigurationProvider
dependency 'config.network.default_server'
end
client = Client.new
client.default_server
Define multiple dependencies.
class Rocket
include Plumbum::Consumer
include RocketPartsProvider
dependency :engine, :fusilage, :payload
end
rocket = Rocket.new
rocket.engine
Define multiple dependencies with scoped keys.
class Server
include Plumbum::Consumer
include ConfigurationProvider
dependency :port, :protocol, :timeout, scope: 'config.network'
end
server = Server.new
server.port
Define a method depndency.
class Application
include Plumbum::Consumer
include ProcessManagerProvider
dependency '#restart', scope: :process_manager
end
application = Application.new
application.restart(force: true)