Ruby include vs. extend
I learned a valuable lesson about Ruby this morning - if you have a module of shared code in Ruby:
module SharedStuff def log puts "log" end end
then:
- include makes the module's methods available to an instance of the class
- extend makes the methods available to the class itself
This means that by using the same base code, you can add them in as class methods with the extend directive, and as instance methods with the include directive.
Totally 'Ruby', as it's a strange, massive difference that might be missed by new users of the language.
Glad I Learned it.