From: Galevsky gal Date: 2007-06-27T02:51:13+09:00 Subject: Re: Class instance into included module Trans wrote: > On Jun 26, 1:00 pm, Galevsky Gal wrote: >> method_HelloWorld.call if iwant >> Do you have any idea ? I cannot get my instance using self since self >> means the module itself. How can I make a .call onto *parent* class >> method ? > > The way you have it paradoxical b/c "method_HelloWorld.call if iwant" > is happening before an instance is ever created. BUt if you just men > accessing Clas, then just put that: > > method_HelloWorld = Clas.instance_method('helloWorld') > > However, Ruby has some limitations, in that a method needs to be bound > to an instance. And binding is restricted to subclasses of the type of > class the method was taken from. Unfortunate that. But usually one can > find a way to manage. In your case you should ask "what am I trying to > call an instance method outside of an instance? Maybe it should be a > module method, which the instance can call upon instead. > > T. Thanks for your posts guys ;o) Well, I am writting a light unit test framework, like Junit for java. So, I have a TestModule module that deals with Tests objects, assertions and so on. The behaviour I want is: Take a class: Class AClass def method1 "hello" end end To unit-test it, I would like to just need to write that: Class TestAClass def TestMethod1 assume(AClass.new.method,"hello") end include TestModule end To do that, my TestModule should be.... module TestModule class TestManager # handle a tests register, launches all the methods, handles the results, display info and so on def register(method) @register << method end def launch @register.each{ |test| test.call } end def testsSucceed? # handle lots stuff with assume() calls executed during the launch ... end end # find all the methods of TestAClass that have 'Test' in their name, and add them into the register handled by the TestManager mgr = TestManager.new testing_instance = #here is my pb and I 'd like to get a TestAClass instance testing_instance.methods.each{ |method| if !(method =~ /Test/).nil? mgr.register(testing_instance.method(method)) end } puts "launch All the registered tests" mgr.launch end I give you a shortened version but the necessary part to understand what I would like to do. Thanks for your attention, Gal' -- Posted via http://www.ruby-forum.com/.