Module: Plumbum::Consumer

Includes:
Plumbum::Consumers::InstanceMethods
Defined in:
lib/plumbum/consumer.rb

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)

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Methods included from Plumbum::Consumers::InstanceMethods

#get_plumbum_dependency, #has_plumbum_dependency?

Class Method Details

.included(other) ⇒ Object

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



141
142
143
144
145
# File 'lib/plumbum/consumer.rb', line 141

def included(other)
  super

  other.extend(ClassMethods)
end