class ActiveSupport::OptionMerger
def method_missing(method, *arguments, &block)
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