Class: Moneta::Builder Private

Inherits:
Object
  • Object
show all
Defined in:
lib/moneta/builder.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Builder implements the DSL to build a stack of Moneta store proxies

Instance Method Summary collapse

Constructor Details

#initialize {|Builder| ... } ⇒ Builder

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Builder.

Yield Parameters:

  • Builder

    dsl code block

Raises:

  • (ArgumentError)


6
7
8
9
10
# File 'lib/moneta/builder.rb', line 6

def initialize(&block)
  raise ArgumentError, 'No block given' unless block_given?
  @proxies = []
  instance_eval(&block)
end

Instance Method Details

#adapter(name, options = {}, &block) ⇒ Object

Add adapter to stack

Parameters:

  • name (Symbol)

    Name of adapter class

  • options (Hash) (defaults to: {})

    Options hash



41
42
43
# File 'lib/moneta/builder.rb', line 41

def adapter(name, options = {}, &block)
  use(Adapters.const_get(name), options, &block)
end

#buildObject

Build proxy stack

Returns:

  • (Object)

    Generated Moneta proxy stack



16
17
18
19
20
21
22
# File 'lib/moneta/builder.rb', line 16

def build
  klass, options, block = @proxies.first
  @proxies[1..-1].inject([klass.new(options, &block)]) do |stores, proxy|
    klass, options, block = proxy
    stores << klass.new(stores.last, options, &block)
  end
end

#use(proxy, options = {}, &block) ⇒ Object

Add proxy to stack

Parameters:

  • proxy (Symbol or Class)

    Name of proxy class or proxy class

  • options (Hash) (defaults to: {})

    Options hash

Raises:

  • (ArgumentError)


29
30
31
32
33
34
# File 'lib/moneta/builder.rb', line 29

def use(proxy, options = {}, &block)
  proxy = Moneta.const_get(proxy) if Symbol === proxy
  raise ArgumentError, 'You must give a Class or a Symbol' unless Class === proxy
  @proxies.unshift [proxy, options, block]
  nil
end