Class: Fixjour::MergingProxy
Overview
Proxy passed to builder blocks as first argument when a builder block takes two arguments. Automatically merges overrides when the #new method is called.
Instance Method Summary
collapse
Constructor Details
#initialize(klass, overrides) ⇒ MergingProxy
8
9
10
11
|
# File 'lib/fixjour/merging_proxy.rb', line 8
def initialize(klass, overrides)
@klass = klass
@overrides = overrides
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
31
32
33
|
# File 'lib/fixjour/merging_proxy.rb', line 31
def method_missing(sym, *args, &block)
@klass.respond_to?(sym) ? @klass.send(sym, *args, &block) : super
end
|
Instance Method Details
#new(defaults = {}) ⇒ Object
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/fixjour/merging_proxy.rb', line 20
def new(defaults={})
attrs = defaults.merge(@overrides)
accessible, inaccessible = partition(attrs)
returning @klass.new(accessible) do |instance|
inaccessible.each do |key,val|
instance.send("#{key}=", val)
end
end
end
|
#protected(*attrs) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/fixjour/merging_proxy.rb', line 13
def protected(*attrs)
attrs = attrs.empty? ?
@protected :
@protected = attrs
Set.new(attrs)
end
|