Class: Moneta::Builder Private
- Inherits:
-
Object
- Object
- Moneta::Builder
- 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
-
#adapter(adapter, options = {}, &block) ⇒ Object
Add adapter to stack.
-
#build ⇒ Object
Build proxy stack.
-
#initialize {|Builder| ... } ⇒ Builder
constructor
private
A new instance of Builder.
-
#use(proxy, options = {}, &block) ⇒ Object
Add proxy to stack.
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.
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(adapter, options = {}, &block) ⇒ Object
Add adapter to stack
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/moneta/builder.rb', line 48 def adapter(adapter, = {}, &block) case adapter when Symbol use(Adapters.const_get(adapter), , &block) when Class use(adapter, , &block) else raise ArgumentError, 'Adapter must be a Moneta store' unless adapter.respond_to?(:load) && adapter.respond_to?(:store) raise ArgumentError, 'No options allowed' unless .empty? @proxies.unshift adapter nil end end |
#build ⇒ Object
Build proxy stack
16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/moneta/builder.rb', line 16 def build adapter = @proxies.first if Array === adapter klass, , block = adapter adapter = new_proxy(klass, .dup, &block) check_arity(klass, adapter, 1) end @proxies[1..-1].inject([adapter]) do |result, proxy| klass, , block = proxy proxy = new_proxy(klass, result.last, .dup, &block) check_arity(klass, proxy, 2) result << proxy end end |
#use(proxy, options = {}, &block) ⇒ Object
Add proxy to stack
36 37 38 39 40 41 |
# File 'lib/moneta/builder.rb', line 36 def use(proxy, = {}, &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, , block] nil end |