module MyStuff def self.static_foo # <--- does not work! puts "static foo" end end class MyClass include MyStuff end MyClass.static_foo #!> undefined method `static_foo' for MyClass:Class (NoMethodError)I'd google around for the solution but never quite hit on it.
Long story short, I have finally figured it out and thought I would make this blog post about it. Please see the following example:
1 2 module StaticStuff 3 def static_foo 4 puts "static foo" 5 end 6 end 7 8 module InstanceStuff 9 def foo 10 puts "foo" 11 end 12 end 13 14 class MyClass 15 include InstanceStuff 16 extend StaticStuff 17 end 18 19 MyClass.static_foo 20 MyClass.new.foo 21
For more advanced techniques, see this interesting article by Yehuda about how rails uses three or four stones to kill this one bird. :)
No comments:
Post a Comment