main

rubyのトップレベル(?)のselfはmainというオブジェクトだった。

% ruby -e 'p self'
main

irbでも同じmainになってる。
なんかのクラスのインスタンスってわけじゃなくて素のObjectなようだ。

% irb
irb(main):001:0> self
=> main
irb(main):002:0> self.class
=> Object
irb(main):003:0> self.inspect
=> "main"

んー、でもこれ以上とっかかりがない…。
なんに使うんだろ、これ。

irb(main):001:0> def foo(x)
irb(main):002:1> x+1
irb(main):003:1> end
=> nil
irb(main):004:0> foo(3)
=> 4
irb(main):005:0> self.foo(3)
=> 4

なるほど、関数を定義するとmainのメソッドになるのか。

% ruby -e 'p self.methods-Object.new.methods'
["include", "private", "public"]

mainが普通のオブジェクトと違うところはこの3つのメソッドを持ってるところか。

main
トップレベルでのself。 selfがないわけにはいかないので、ただそこにある ためだけの単なるObjectクラスのインスタンスであるが、 Objectクラスを操作するため、いくつかの特異メソッドを定義して ある。
定義されている特異メソッド
* private
* public
* include

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%CD%D1%B8%EC%BD%B8

なんだ。答えがこんな所にあったんじゃん。