I spent a whole night trying to figure out why a module I was including wasn't producing any results. I finally narrowed it down to this bit of code in the module: def self.included(base) base.send :current_user, :logged_in?, :user? end For some reason, commenting it out lets everything run fine, and it seems that leaving it in causes the module to fail silently. Can someone explain to me what this is doing? I've seen similar calls to self.included(base) which ended with base.extend(SomeModule). I searched high and low for documentation on this, but found nothing. My best guess is it's some quasi-magic method that's trying to allow ActionView to use these methods as well. Any idea why it's failing or where I can read up on this? Thanks!
on 2006-03-08 09:41
on 2006-03-08 15:11
Running this command over my gems, >find /lib/ruby/g*/1*/g* -iname "*.rb" -print | xargs egrep "\<def\>.*included\>" | grep 3758 | wc 22 74 2119 is saying that there are about 22 places where this function has already been defined in rails build 3758. You are probably overwriting one of these. Changing your functions name should solve your problem. Or you could try calling 'super' in your function. I guess running ruby with warnings turned on will tell you if you are redefining the function.
on 2006-03-08 15:54
On Mar 8, 2006, at 1:38 AM, firstname.lastname@example.org wrote: > For some reason, commenting it out lets everything run fine, and it > seems that leaving it in causes the module to fail silently. The default included() is what adds the methods, so you need to add a call to super to keep that behavior. James Edward G. II