In a very dynamic language like Ruby, open classes and method aliasing (e.g., alias_method_chain) mitigate this problem, but they don’t solve it. If you manipulate a class to add logging, all instances of that class will have logging; you can’t take a surgical approach and say “just objects instantiated in this context”.
This is not true in Ruby!
myinstance = MyClass.new
def myinstance.special_method()
puts "only on these instances!"
end
myinstance.special_method()
The author's point about avoiding unnecessary binding is well taken, but he should refrain from declaiming on languages he doesn't know that well.