I am new to ruby . Here is something i feel cool that i learnt today , You can mix in instance methods and class methods by include and extend respectively .

In rails i put a file my_module.rb in my lib directory

Inside which i wrote my module

module MyModule
def foo
puts "bar"
end
end

Rails auto loads the lib folder so you can include MyModule in your ,hmm say , model

Class MyModel << ActiveRecord::Base
include MyModule
...
...

This would add an instance method foo (which is from the module) to your Model. So you can do

>> mm = MyModel.new
>> mm.foo bar

Now if you needed MyModel.foo , ie a class method , you would extend your model.

Class MyModel << ActiveRecord::Base
extends MyModule
...
...
>>MyModel.foo
bar

You can override methods of your class , from a module like this .Which , say for example , lets you monkeypatch active record methods say , which you are not supposed to do though . >: ) (Why ? probably because it will be lot of laugh when your co developer finally realises his bug was because he did not know you overriding the method)