Class | Needle::Registry
In: | lib/needle/registry.rb
Parent: | Container

Registry is a specialization of Container, with additional functionality for bootstrapping basic services into a new registry. It also supports a define! method for easily registering new services.

Usage:

      require 'needle'

      registry = Needle::Registry.new
      registry.register( :foo ) { Foo.new }
      registry.register( :bar ) { |c| Bar.new( c.foo ) }

      bar = registry.bar

### Methods

define define! fullname new

### Public Class methods

define( *parms, &block )

Instantiate a new Registry (via new) and immediately invoke define using the given block.

Usage:

      registry = Needle::Registry.define do |b|
        b.add { Adder.new }
        ...
      end

      adder = registry.add

define!( *parms, &block )

Instantiate a new Registry (via new) and immediately invoke define! using the given block.

Usage:

      registry = Needle::Registry.define! do
        add { Adder.new }
        ...
      end

      adder = registry.add

new( opts={} ) {|self| ...}

Instantiate a new Registry. The options hash may include the following keys:

`:logs`: | options used to initialize the logger factory. The value to this key should be another hash.
`:parent`: | The parent container of this registry.
`:name`: | The name of this registry.

If a block is given, the constructed registry instance is yielded to it.

Usage:

      registry = Needle::Registry.new

or

      registry = Needle::Registry.new do |reg|
        reg.register( :add ) { Adder.new }
      end

or

      registry = Needle::Registry.new(
        :logs => { :filename => "/dev/null" }
      )

### Public Instance methods

fullname()

Returns `nil`, unless the registry has a parent, in which case it acts like Container#fullname. Registries are usually unnamed containers.

[Validate]