(Ruby,Rails) Context of SELF in modules and libraries...? (Ruby,Rails) Context of SELF in modules and libraries...? ruby ruby

(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