Pretty sure that you need to prefix the module methods with the module
name. Yeah, I know.
Try:
module Good
def Good.init_module
@var = "good"
end
....
And the in your "different file"
require 'good';
Good.init_module
Which isn't exactly what you want.
<talking out of ear now>
I think that you have to prefix the method with the module name since
using it this way gets things added to main rather than to your own
class/instance. It smells like include should make it so that you can
omit the Good. on the call, but it doesn't work for me. Again, I think
it may be something to do with it being in main rather than in your own
class. You're basically trying to make a mixin for main and I
suspect/know that the rules are somewhat different.
</talking out of ear now>
Hope that this helps some...
···
-----Original Message-----
From: rps@salas.com [mailto:rps@salas.com]
Sent: Wednesday, June 03, 2009 9:17 AM
To: ruby-talk ML
Subject: Module methods
I am trying to do this:
==== File: good.rb ====
module Good
def init_module
@var = "good"
end
def life_is_good
puts "life is #{@var}"
end
[... more methods ...]
end
include X
init_module
======== and in a different file ========
include Good
life_is_good
- - - - - - - -
That works but messes up when I try to use ruby-debug with it. So I
changed it to try to call init_module in a different way: instead of
include X, init_module, I tried both of these, neither of which works:
X::init_module
X.init_module
Each of those calls lead to an 'undefined method 'init_module' for
X:Module.
I am getting myself confused with Module methods etc etc.
Any help would be gratefully accepted!!
Pito
--
Posted via http://www.ruby-forum.com/.