|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Hi all
module MyModule def my_method return "my module rocks!" end end class MyClass include(MyModule) def my_method return "my class rocks!" end end Is there a way to call MyModule::my_method from within MyClass? "super" sadly doesn't work... Thanks a lot Josh -- Posted via http://www.ruby-forum.com/. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Nov 22, 2007, at 6:21 PM, Joshua Muheim wrote:
> Hi all > > module MyModule > def my_method > return "my module rocks!" > end > end > > class MyClass > include(MyModule) > > def my_method > return "my class rocks!" > end > end > > Is there a way to call MyModule::my_method from within MyClass? > "super" > sadly doesn't work... Perhaps this will do: <code> module MyModule def my_method "my module rocks!" end end class MyClass include MyModule alias module_method my_method def my_method "#{module_method}\nmy class rocks!" end end puts MyClass.new.my_method </code> <result> my module rocks! my class rocks! </result> Regards, Morton |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
> module MyModule
> def my_method > return "my module rocks!" > end > end >=20 > class MyClass > include(MyModule) >=20 > def my_method > return "my class rocks!" > end > end >=20 > Is there a way to call MyModule::my_method from within=20 > MyClass? "super" > sadly doesn't work... You'd need to alias the old method: class MyClass include(MyModule) alias ld_my_method :my_methoddef my_method old_my_method end end (If you're using rails/activesupport, you'd probably use alias_method_chain to simplify things) Dan. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
> (If you're using rails/activesupport, you'd probably use
> alias_method_chain to simplify things) > > Dan. Thanks! Especially for the alias_method_chain hint! :-) -- Posted via http://www.ruby-forum.com/. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
On Nov 23, 2007 12:21 AM, Joshua Muheim <forum@josh.ch> wrote:
> Hi all > > module MyModule > def my_method > return "my module rocks!" > end > end > > class MyClass > include(MyModule) > > def my_method > return "my class rocks!" > end > end > > Is there a way to call MyModule::my_method from within MyClass? "super" > sadly doesn't work... super shall work and indeed does module MyModule def my_method return "my module rocks!" end end class MyClass include(MyModule) def my_method return [ super, "my class rocks!" ].join("\n") end end puts MyClass.new.my_method HTH Robert > > Thanks a lot > Josh > -- > Posted via http://www.ruby-forum.com/. > > -- what do I think about Ruby? http://ruby-smalltalk.blogspot.com/ |
|
![]() |
| Outils de la discussion | |
|
|