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 chain of store proxies
Instance Method Summary collapse
-
#adapter(name, options = {}, &block) ⇒ Object
private
Add adapter to chain.
- #build ⇒ Object private
-
#initialize(&block) ⇒ Builder
constructor
private
A new instance of Builder.
-
#use(proxy, options = {}, &block) ⇒ Object
private
Add proxy to chain.
Constructor Details
#initialize(&block) ⇒ 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.
14 15 16 17 18 |
# File 'lib/moneta/builder.rb', line 14 def initialize(&block) raise ArgumentError, 'No block given' unless block_given? @proxies = [] instance_eval(&block) end |
Instance Method Details
#adapter(name, options = {}, &block) ⇒ Object
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.
Add adapter to chain
35 36 37 |
# File 'lib/moneta/builder.rb', line 35 def adapter(name, = {}, &block) use(Adapters.const_get(name), , &block) end |
#build ⇒ Object
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.
6 7 8 9 10 11 12 |
# File 'lib/moneta/builder.rb', line 6 def build klass, , block = @proxies.first @proxies[1..-1].inject([klass.new(, &block)]) do |stores, proxy| klass, , block = proxy stores << klass.new(stores.last, , &block) end end |
#use(proxy, options = {}, &block) ⇒ Object
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.
Add proxy to chain
24 25 26 27 28 29 |
# File 'lib/moneta/builder.rb', line 24 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 |