ruby のクラス変数はキモくて自分は一切使っていない。どういう風にキモいのか。

class Hoge
  @@hoge = 'a'
  def self.hoge=(hoge)
    @@hoge = hoge
  end
  def self.hoge
    @@hoge
  end
end

class Moge < Hoge
end
Moge.hoge
#=> 'a'
Hoge.hoge
#=> 'a'

Moge.hoge = 'b'
Moge.hoge
#=> 'b'
Hoge.hoge
#=> 'b' # こっちも変わっちゃう
継承したクラスも含めて共通になってしまうのでめっちゃ使いづらい。
クラスのインスタンス変数なら継承したクラスとは共通にならないので使いやすい。クラスインスタンス変数を使いましょう。