2017-07-05 12 views
0

Gemfileでバージョン制約を指定するにはどうすればよいですか?gemfileのリリース前も含めて常に最新リリースになるようにしてください。Gemfileのprereleasesを含む最新バージョンにバージョンを設定してください。

現在、私が扱っているライブラリは最新の安定版2.0.0と最新のプレリリース2.1.0.alpha.pre.171です。

私は理解しているように、バージョンの制約を>=2.1.0.alpha.pre.171に設定するか、または>=2.1.0.aに設定することができました。しかし、>=2.2.0.alpha.pre.1>=3.0.0.alpha.pre.1などの将来のプレリリースや、3.0.0などの将来の安定版も含まれますか?それは常に最新のバージョンに解決されますか?

免責事項: 誤解されないように、これは生産的な依存関係管理のためのものではありません。アイデアは最新の機能が含まれている必要があり、最新のプレリリースが壊れている場合はクラッシュするように、デモを実行することです。

答えて

2

これは一言で言えば非常に悪い考えですが、それは確認することは非常に簡単です:

%w|2.1.0.alpha.pre.171 
    2.1.0 
    2.2.0.alpha.pre.1 
    3.0.0.alpha.pre.1|.map(&Gem::Version.method(:new)).sort 
#⇒ [ 
# [0] #<Gem::Version "2.1.0.alpha.pre.171">, 
# [1] #<Gem::Version "2.1.0">, 
# [2] #<Gem::Version "2.2.0.alpha.pre.1">, 
# [3] #<Gem::Version "3.0.0.alpha.pre.1"> 
# ] 

だから、はい、>=2.1.0を含め、すべての新しいリリースのために動作します。

+0

私は、これはまた、指定されたプレリリースとは異なるメジャー番号と最新の将来の安定したバージョンを含むであろうと思います。 (元の質問に例を追加しました) –

+0

質問を再度お聞かせください。私は明示的に '2.1.0'という安定版を置いてソートされたリストにどこに置かれるかを示します。 – mudasobwa

1

あなたは二つのことをしたいと思うでしょう:

  1. があなたのGemfileに>= 2.1.0.alpha.pre.171を指定します。ここで重要なことは、指定された制約自体がプレリリースであることです。これは、Bundlerが事前リリースを欲しいと訴える唯一の方法です。 Bundlerがアップデートを探すときは、プレリリースやメジャーリリースを含むすべての将来のリリースが含まれます。

  2. 自動ツールを使用して、Gemfile.lockを定期的に更新します。 DependabotDepfuまたはのいずれかが機能します。 (開示:私はDependabotを書きました。)

驚くべきことに、バンドラー1.15.1のように、(1)で作成した行動を複製bundle updateに渡すことができるオプションはありません。


  1. https://github.com/bundler/bundler/blob/v1.15.1/lib/bundler/index.rb#L194-L200
関連する問題