self

selfとは

http://d.hatena.ne.jp/toshi_hirasawa/20080808/1360124848
のクラスメソッドの部分も参照のこと

selfはそのオブジェクト内ではオブジェクト自身を指す
なんでそうなるかといえば、
RubyにとってclassはClassクラスのインスタンスになる。
class Hoge〜の記述はclass宣言ではなく、
classインスタンスリテラルと捉えられる。

なのでclass 〜 end中のselfはClassクラスのインスタンス自身を指すことになり、クラスメソッドにselfをつけるのはそういう意味なのだ。

なので
クラスメソッド内部のselfもクラス自身を表すことになる
インスタンスメソッドを呼び出すときは内部のselfはオブジェクト=インスタンス自身となる。
トップレベルの場合はmainになるんだねぇ

[hirasawa@centos-hira ~]$ cat self.rb
#!/usr/local/bin/ruby -Ku
class Hoge
  def Hoge.hoge
    print "ほげ"
    p(self)
  end

  def self.piyo
    print "ぴよ"
    p(self)
    self.hoge
  end

  def wao
   print "わお"
   p(self)
  end
end
Hoge.hoge
Hoge.piyo
Hoge.new.wao
p(self)

[hirasawa@centos-hira ~]$
[hirasawa@centos-hira ~]$ ./self.rb
ほげHoge
ぴよHoge
ほげHoge
わお#<Hoge:0x9197b94>
main
[hirasawa@centos-hira ~]$

こちらを参考にさせていただきました。
http://yakinikunotare.boo.jp/orebase/index.php?Ruby%2F%A5%AF%A5%E9%A5%B9
俺の基地