4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# File 'lib/hijacker/method_definer.rb', line 4
def define_hijacked(methods, receiver, uri)
methods.each do |met|
receiver.send(:alias_method, :"__original_#{met}", :"#{met}")
receiver.send(:undef_method, :"#{met}")
writer = (met =~ /=$/)
receiver.class_eval " def \#{met}(\#{writer ? 'arg' : '*args, &blk'})\n _args = \#{writer ? '[arg]' : 'args'}\n _args += [blk] if block_given?\n begin\n __original_\#{met}(\#{writer ? 'arg' : '*args, &blk'}).tap do |retval|\n Hijacker.register :\#{met}, _args, retval, nil, self, \#{uri.inspect}\n end\n rescue=>error\n Hijacker.register :\#{met}, _args, nil, error, self, \#{uri.inspect}\n raise error\n end\n end\n"
end
end
|