はじめに
Crystal言語は、Rubyとは異なり、shard.ymlにバージョンナンバーを明示する文化がある。
Rubyでは、gemspecに直接バージョンナンバーを書き込むのは好ましくないとされており、VERSION定数を参照する。
Crystalでは、VERSION定数を指定しなければならないという決まりはない。しかし、Rubyの文化を踏襲して、VERSION定数が指定されていることも多い。しかし、shard.yml とVERSION定数の両方でバージョンナンバーを記述すると、記述が二重で冗長である。
結論
Shardsに書かれたバージョンナンバーを、マクロを使って参照するということが行われる。
具体的には下記のように書けばいい。
module PIYO
VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }}
end
このようにすることで、バージョンナンバーの定義はshard.ymlに集約される。
この記事は以上です。