------ art_56662_22252511.1162824522741
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hi all,
I must be really thick with this because I cannot get my class to behave.
What I want to do is
class AClass
include AModule
end
and have that module mixin both instance and class methods. I've seen this
done, but obviously I don't understand what's really going on because I
can't make it happen. I know this has been discussed on the list before as
well. I've reviewed that as well. I fell really thick with this one. It's
just not going in.
Here's what I've tried (don't worry it's short). I put this into a single
file and just run it. Any pointers to the source of my misunderstanding
would be great.
Thanx
module A
def self.included(base)
base.extend ClassMethods
base.send( :include, InstanceMethods )
end
module InstanceMethods
def b
puts "I'm an instance method"
end
end
module ClassMethods
def a
puts "I'm a class method"
end
end
end
class Object
include A
end
require 'test/unit'
class MyModuleTest < Test::Unit::TestCase
def test_object_should_have_the_a_method_as_class_method
assert Object.respond_to?( :a )
end
def test_object_should_not_have_the_a_method_as_instance_method
assert !Object.new.respond_to?( :a )
end
def test_object_should_have_the_b_method_as_instance_method
assert Object.new.respond_to?( :b )
end
def test_object_should_not_have_the_b_method_as_class_method
assert !Object.respond_to?( :b )
end
end
require 'test/unit/ui/console/testrunner'
Test::Unit::UI::Console::TestRunner.run(MyModuleTest)
------ art_56662_22252511.1162824522741--