bundle gem でテンプレートを生成すると、version.rb というファイルに Package::Name::Version::VERSION という定数を作ってそこにバージョン番号を定義してくれる。gemspec では version.rb を require して、VERSION 定数を参照することで gem パッケージのバージョンを設定する。 この方法は、バージョン番号の定義が一カ所だけになって DRY だが、Package::Name をモジュールではなく、Objectではないクラスのサブクラスにしたい場合に問題を発生させる。 その問題とは、lib/package/name.rb と lib/package/name/version.rb の2つのファイルで、以下のようにスーパークラスを二重に書く必要があることだ。 # lib/package/name.rb module