Summary
Swap allows dynamically replacing and restoring methods. Useful as a stubbing device, as it allows unstubbing as well.
Examples
require 'swap'
class User
extend Swappable
attr_writer :name
def name
@name
end
end
user = User.new
user.name = 'martin'
user.name #=> 'martin'
User.swap!(:name) { @name.reverse }
user.name #=> 'nitram'
User.unswap!(:name)
user.name #=> 'martin'
Calling #unswap! without argument will restore all swapped methods.
See also examples/simple.rb