Mixin problems


#1

I’m trying to add a mixin i wrote (ModelExtensions module in
lib/model_extensions.rb) to ActiveRecord::Base so that i can use the
methods in it in all my classes. (well actually there’s only a single
method in there at the moment)

I’ve added this to environment.rb (right at the bottom):

require ‘model_extensions’
ActiveRecord::Base.send(:extend, ModelExtensions)

And the web server starts ok. But the mixin just doesn’t seem to work -
I get a “missing method” message.

So, i explicitly added the mixin to the required classes, with

require ‘model_extensions’

at the top of the model file. Still no joy. Modules in lib should work
shouldn’t they? Can anyone see what i’m doing wrong?

thanks in advance


#2

On 7/31/07, Max W. removed_email_address@domain.invalid wrote:

I’m trying to add a mixin i wrote (ModelExtensions module in
lib/model_extensions.rb) to ActiveRecord::Base so that i can use the
methods in it in all my classes. (well actually there’s only a single
method in there at the moment)

I’ve added this to environment.rb (right at the bottom):

require ‘model_extensions’
ActiveRecord::Base.send(:extend, ModelExtensions)

Is the method supposed to be a class method or an instance method? If
it’s supposed to be and instance method, try include instead of
extend:

ActiveRecord::Base.send(:include, ModelExtensions)


#3

David C. wrote:

Is the method supposed to be a class method or an instance method? If
it’s supposed to be and instance method, try include instead of
extend:

ActiveRecord::Base.send(:include, ModelExtensions)

That’s fixed it! Thanks very much - i didn’t appreciate the subtleties
when i blindly copied someone’s example code (a recurring problem for me
with learning rails actually).

cheers!


#4

On 8/1/07, Max W. removed_email_address@domain.invalid wrote:

when i blindly copied someone’s example code (a recurring problem for me
with learning rails actually).

cheers!

Cool - glad to help.

Good luck!
David