(Ruby,Rails) Context of SELF in modules and libraries...?
In a module:
When you see self
in an instance method, it refers to the instance of the class in which the module is included.
When you see self
outside of an instance method, it refers to the module.
module Foo def a puts "a: I am a #{self.class.name}" end def Foo.b puts "b: I am a #{self.class.name}" end def self.c puts "c: I am a #{self.class.name}" endendclass Bar include Foo def try_it a Foo.b # Bar.b undefined Foo.c # Bar.c undefined endendBar.new.try_it#>> a: I am a Bar#>> b: I am a Module#>> c: I am a Module
For a short summary...http://paulbarry.com/articles/2008/04/17/the-rules-of-ruby-self
self is also used to add class methods (or static methods for C#/Java people). The following snippet is adding a method called do_something to the current class object (static)...
class MyClass def self.do_something # class method # something end def do_something_else # instance method endend