2

コードのバージョン番号を ruby​​ gem 内に保存するにはどうすればよいですか?

私は実際に次の 2 つの手法を見てきました。

  1. <gem root>/VERSIONあなたのsemverのみが含まれています。
  2. <gem root>/lib/your_gem/version.rb次のコードが含まれています。

 

module IfYourCodeIsInAModule
  class YourGem
    VERSION="0.0.1"
  end
end

私は 1. が好きです。私は 2 が好きです。コードの一部なので、バージョン番号を簡単にログに書き込むことができます。

1. コード内からバージョン番号にアクセスしたい場合、ファイルの読み取りを行う必要があるため (最悪のことではありません)、2. は好きではありません。コア クラスが別のクラスから拡張されている場合クラスの場合、私はあまりにもその良識を持っている必要がありversion.rbます(または、そうでなければ取得しますsuperclass mismatch)-たとえば。

module IfYourCodeIsInAModule
  class YourGem < OtherWork
    VERSION = "0.0.1"
  end
end

実行時に実際のコードからこのファイルが必要な場合は、問題ありません。それをgemspecに含めると、突然 require 'other_work'バージョン番号を取得する必要があります!

私は喜んで独自の解決策を考え出しますが、これは新しい問題ではありません。コミュニティは何をしていて、これに関する一般的な知恵は何ですか?

4

1 に答える 1

1

私はgem VERSION民族学の専門家ではありませんが、おそらくこの専門外の専門知識がないために、「一般的な知恵」に関する質問に答えるのに、より平均的になり、より適しています.

したがって、一般的な知恵は、Bundler を使用することです。で gem を作成するbundle gem my_gem_nameと、バンドラーが自動的にlib/my_gem_name/version.rbファイルを作成し、lib/my_gem_name.rb. version.rbしたがって、バンドラーを使用せず、独自の gem を自分でロールすることに決めた場合でも、

module MyGemName
  VERSION = "0.0.1"
end

つまり、メインモジュールの真下です。version.rb次にfromをロードしlib/my_gem_name.rbます。もちろん、コードがより異質な方法で編成されている場合は、さらに即興する必要があります。

于 2013-02-11T12:19:39.040 に答える