24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/keyword_params.rb', line 24
def method_added(name)
return if Thread.current[:in_keyword_params_method_added]
Thread.current[:in_keyword_params_method_added] = true
original_method = instance_method(name)
keyword_list = @keyword_list
@keyword_list = nil
define_method(name) do |*args|
options = args.last.is_a?(Hash) ? args.pop : {}
keyword_args = keyword_list.values(options)
needed_keyword_args = keyword_args[(args.size..-1)]
original_method.bind(self).call(*(args + needed_keyword_args))
end
super
Thread.current[:in_keyword_params_method_added] = false
end
|