web-dev-qa-db-ja.com

HerokuにデプロイするときにRailsの更新バンドルの警告を解決するには?

次の警告を解決するにはどうすればよいですか? Rubyバージョンを2.3.1に、Railsバージョンを4.2.6に更新しました。アプリをherokuにプッシュすると、この警告が表示されます。

remote:        Cleaning up the bundler cache.
remote:        Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
remote:        Removing mime-types-data (3.2016.0221)

Gemfile.lockを削除してbundle installを実行し、さらにbundlerを更新しようとしましたが、警告は消えません。

suramai@Rails-tutorial:~/workspace/converse (master) $ gem install bundler
Successfully installed bundler-1.12.4
1 gem installed
suramai@Rails-tutorial:~/workspace/converse (master) $
30
LovingRails

そのため、herokuにインストールされているバンドラーのバージョンが、開発マシンでGemfile.lockを作成するために使用したバージョンよりも古いという不満があります。

おそらく、警告を無視してください。ほとんどの場合、Gemfile.lockの作成に使用したよりも少し古いバージョンのbundlerでインストールするだけで十分です。

bundlerは最近、Gemfile.lockで使用されるbundlerのバージョンの記録を追加し、その後、次の警告を追加しました。これは、場合によっては、Gemfile.lockを作成するために新しいバージョンのbundlerバージョンが正しく動作しない可能性があります。そのため、問題になる場合があります。通常はそうではありませんが。

別のバージョンのbundlerでherokuをインストールできるようには見えません

警告を消したい場合は、代わりに、herokuが使用するのと同じバージョンのバンドラーをローカルで使用することを選択できます。 bundler herokuのどのバージョンが使用されているかを正確に把握するのは少し難しいです-その警告行が実際に2つの異なるバンドラーのバージョンが関係していることを教えてくれるといいでしょう!しかし、そうではありません。

このherokuサポートドキュメント は、herokuがバンドラー1.11.2を使用していることを示唆しています。 (現在、将来的に変更される可能性があります!)。ログから、1.12.4を使用していることがわかります。警告を回避するために、代わりに1.11.2を使用する場合は、システムにインストールされているbundlerのすべてのバージョンを削除します。

 gem uninstall bundler

次に、1.11.2を具体的にインストールします。

 gem install bundler -v 1.11.2

一般に、bundleコマンドを使用すると、システムにインストールされている最新バージョンが使用されるため、常に1.11.2を使用していることを確認し、システムにインストールされている最新バージョンであることを確認し、インストールしないでください後で。

次に、警告が表示されないように、Gemfile.lockにバンドルされていると言うように1.11.2を再生成する必要があります。これは一種の苦痛であり、最も簡単なことはGemfile.lockを手作業で編集し、それ以降はバンドラー1.11.2のみを使用することです。

システムに新しいバージョンのバンドラーをインストールする場合でも、バンドラー1.11.2を使用するには、bundle installまたはbundle updateを実行するたびに(とにかくherokuにデプロイされるアプリの場合)、次のように実行できます。

 bundle _1.11.2_ install

など。rubygemsにバンドラーバージョン1.11.2でbundle installコマンドを実行するように指示すると、そのバージョンはGemfile.lockに記録され、警告は表示されません。

これは少し面倒です。多くの開発者はおそらく警告を無視します。通常は問題ないはずです。

64
jrochkind