module FunSwap
Public Class Methods
swap(mod, fn_name, fn)
click to toggle source
Swap module function in method and return the old function.
mod:module -> fn_name:symbol -> fn:proc -> old_fn:proc
# File lib/funswap.rb, line 7 def self.swap(mod, fn_name, fn) old_fn = mod.method(fn_name).to_proc begin eigenclass = class << mod; self; end eigenclass.class_eval { remove_method fn_name } rescue NameError end mod.class.send(:define_method, fn_name, fn) old_fn end
with_fn(mod, fn_name, fn, &blk)
click to toggle source
# File lib/funswap.rb, line 18 def self.with_fn(mod, fn_name, fn, &blk) old_fn = swap(mod, fn_name, fn) blk.call() ensure swap(mod, fn_name, old_fn) end