self.included(base) and base.class_eval problems, etc.

N

n8agrin

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!
 
L

Lou Vanek

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.
 
J

James Edward Gray II

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.

The default included() is what adds the methods, so you need to add a
call to super to keep that behavior.

James Edward Gray II
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top