Plumbum

A minimal dependency injection framework for Ruby, using vanilla Ruby semantics to define and reference dependencies from different providers.

Module: Plumbum::Consumer

Parent Namespace
Plumbum
Included Modules
Plumbum::Consumers::InstanceMethods
Defined In
lib/plumbum/consumer.rb

Table Of Contents

Overview

Provides methods for defining and accessing injected dependencies.

Examples

Define a basic dependency.

class Orchestrator
  include Plumbum::Consumer
  include ApplicationProvider

  dependency :application
end

Orchestrator.new.application
#=> returns the value of ApplicationProvider.value

Define an aliased dependency.

class Orchestrator
  include Plumbum::Consumer
  include ApplicationProvider

  dependency :application, as: :app
end

Orchestrator.new.app
#=> returns the value of ApplicationProvider.value

Define an optional dependency.

class BillCustomer
  include Plumbum::Consumer

  dependency :rewards
end

class BillRewardsCustomer < BillCustomer
  include RewardsProvider
end

BillCustomer.new.rewards
#=> returns nil

BillRewardsCustomer.new.rewards
#=> returns RewardsProvider.value

Define an unmemoized dependency.

class Action
  include Plumbum::Consumer
  include RequestProvider

  dependency :request, memoize: false
end

action = Action.new
action.request
#=> returns the value of RequestProvider.value

request = Request.new
RequestProvider.value = request
action.request
#=> returns the new 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
#=> returns the value of ConfigurationProvider.values[:config][:network][:default_server]

Define multiple dependencies.

class Rocket
  include Plumbum::Consumer
  include RocketPartsProvider

  dependency :engine, :fusilage, :payload
end

rocket = Rocket.new
rocket.engine
#=> returns the value of RocketPartsProvider.values[: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
#=> returns the value of ConfigurationProvider.values[:config][:network][: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)
#=> calls ProcessManagerProvider.values[:process_manager].restart(force: true)

Back To Top

Defined Under Namespace

Modules
ClassMethods

Back To Top

Class Methods

.included(other) => Object

Callback invoked when Consumer is included in another module or class.

Back To Top

Instance Methods

#get_plumbum_dependency(key, optional: false) => Object

Inherited From
Plumbum::Consumers::InstanceMethods

Retrieves the dependency with the specified key.

Parameters

Returns

Raises

#has_plumbum_dependency?(key) => true, false

Inherited From
Plumbum::Consumers::InstanceMethods

Checks if the dependency with the given key is defined.

Parameters

Returns

Raises

Back To Top


Back to Documentation | Reference | Plumbum