16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/active_support/option_merger.rb', line 16
def method_missing(method, *arguments, &block)
options = nil
if arguments.size == 1 && arguments.first.is_a?(Proc)
proc = arguments.shift
arguments << lambda { |*args| @options.deep_merge(proc.call(*args)) }
elsif arguments.last.respond_to?(:to_hash)
options = @options.deep_merge(arguments.pop)
else
options = @options
end
if options
@context.__send__(method, *arguments, **options, &block)
else
@context.__send__(method, *arguments, &block)
end
end
|