rubyのクラス変数が特殊でわけわからんくなったので、まとめます。
クラス変数
@@hoge
で定義されるもの。
注意なのは、全てのサブクラスで同じ変数が参照されること
つまり
予期しないところで破壊されてしまう恐れがあります。
なので、使うなっということらしいです。
じゃあどうするか。
クラスインスタンス変数を使う
クラス変数なのかインスタンス変数なのかはっきりしてほしいですね。
classのコンテキスト内で @hoge を定義することらしいですよ。
この辺の仕組みを理解するのは
そもそも原理主義的なオブジェクト指向的な思想だとクラス変数やらクラスメソッド使うのは適切な責務の分離ができていないのでアンチパターンなのですが、使いたいですよね。楽だし。
ということでrubyでクラス変数を使いたいときは クラスインスタンス変数 を使いましょう