Dead simple - not so useful gem helping you keep track of your monkey patches. In other words, this gem lets you keep track of modifications made on some “base” code, classes/methods tempered with can be easily found and the modifying code can be spotted.
require 'monkey_patcher' # base code class Foo def bar; 'original Foo#bar'; end end # monkey patch #1 class Foo include MonkeyPatcher monkey_trace("Reopening Foo to add a couple methods necessary for the README", File.expand_path(__FILE__)) def self.bar; 'class method bar'; end def bar; 'modified Foo#bar'; end def baz; 'added Foo#baz'; end end # monkey patch #2 class Foo include MonkeyPatcher monkey_trace("Just to show it works", File.expand_path(__FILE__)) def bar; 'patched another time'; end end puts "Foo was tempered" if Foo.monkey_patched? puts Foo.patched_methods puts Foo.patched_methods.first.desc
Foo was tempered Foo.bar - patched in /Users/mattetti/Desktop/test.rb - Reopening Foo to add a couple methods necessary for the README bar - patched in /Users/mattetti/Desktop/test.rb - Reopening Foo to add a couple methods necessary for the README baz - patched in /Users/mattetti/Desktop/test.rb - Reopening Foo to add a couple methods necessary for the README bar - patched in /Users/mattetti/Desktop/test.rb - Just to show it works
The description and origin of the patch are cached in the modified class, if the same class is reopened without defining a new description and origin, the previously settings will be used. So if you see a method monkey patched 5 times in the same file when you really only monkey patched once, that means that the file was modified in other ‘untraced’ places.
-
Fork the project.
-
Make your feature addition or bug fix.
-
Add tests for it. This is important so I don’t break it in a future version unintentionally.
-
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
-
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Matt Aimonetti. See LICENSE for details.