ruby 2.2.1p85
mac Mavericks


Ruby言語の質問になります。

以下のソースコードを実行した結果、分からないことが2点あります。
① グローバル変数$bの出力結果が何故「nill」になるのか。
② hoge2メソッドを呼び出した際に、何故「A.new == self」がtrueにならないのか。

class A
    $a = self
    def hoge
        $b = self
    end

    def hoge2
        puts self   
        puts A == self
        puts A.new == self
    end
end

puts A == $a, A.new == $b
p $a
p $b
A.new.hoge2

実行結果は以下になります。

true
false
A
nil
#<A:0x007fd8ab82a088>
false
false

以上です。
よろしくお願いします。