From: Ryan Leavengood Date: 2005-08-12T06:14:21+09:00 Subject: Re: Dear RubyGems: Perhaps a better way to override require... Chad Fowler said: > > Ahh, I get it. The point (that I missed) wasn't the actual > implementation of require > but the fact that you were overriding it using a mixin instead of an > alias. Seems reasonable. I don't see any obvious problems either, > but I'd let the question linger here....anyone else? This does seem better, but only if everytime someone overrides require in an included module they be sure to call super. Also it seems to be the alias method is fine, as long as everyone uses a unique name for the old method: module Kernel alias :_old_require_ :require def require(s) puts 'New require, now calling _old_require_...' _old_require_(s) end end module Kernel alias :_some_old_require_ :require def require(s) puts 'New require, now calling _some_old_require_...' _some_old_require_(s) end end require 'English' puts $PID __END__ C:\_Ryan\ruby>ruby require_test.rb New require, now calling _some_old_require_... New require, now calling _old_require_... 3408 If unique names aren't used, the result is an infinite loop. Ryan