LoginSignup
0
0

More than 5 years have passed since last update.

herokuにRailsをデプロイするときにWarning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (ver.si.on).が出る

Posted at

Railsをサクッとお手軽にデプロイできる神PaaSであるherokuですが、お手軽に利用したい初心者を陥れる罠がその辺に落ちてたりもします。例えば私なんかが引っかかります。
ということで、この記事では掲題の

herokuにRailsをデプロイするときにWarning: the running version of Bundler (1.15.2) is older than the version that created the lockfile (ver.si.on).みたいなのが出る

に対処していきたいと思います。私が詰まったパターンはググっても出なかったので、残しておきます。

まず、私のパターン場合の解決方法は、

Gemfile.lockを最新にする

でした。以下詳細です。

なぜか

heroku様が吐き出すログはWe suggest you upgrade to the latest version of Bundler by running gem install bundler.と仰ります。掲題のメッセージと合わせて、「使ってるbundlerがGemfile.lockで指定されているのより古いから新しいのにして欲しいな」ですね。
Gemfile.lockはbundle installの際に勝手に作られるもので、その時に使用したbundlerのバージョンとか、取得したGemのバージョンや、あるGemが依存するGemはこれだよとかってのが記録されます。例えば、Railsでユーザ認証といえばこれ!なDeviseは、

Gemfile.lock
devise (4.4.3)
      bcrypt (~> 3.0)
      orm_adapter (~> 0.1)
      railties (>= 4.1.0, < 6.0)
      responders
      warden (~> 1.2.3)

こんな感じになっています。暗号化Gemのbcyptとか認証のベースを担うwardenとかに依存関係があるんですね。

なぜこれがあるのかというと、「ローカル環境ではこれらのGemがこんなバージョンで使われている」というのが記録されていれば、ほかの環境でGemを準備する時にそれを参考にすることで、迷わずローカルで動く組み合わせのGem×バージョン×依存Gemを用意できるからです。
要するに、他の環境でちゃんとGemを用意するためにあるんですね。

でbundlerのアップデートに関しては、ローカルなら対処できるのですがheroku上では無理です。なぜかというと、公式ドキュメントに書いてあるのですが、すごくざっくり言うと「安定して使えることが確認できているバージョンのbundlerを使うよう、設定を固定しています」ということですね。

公式ではローカルのbundlerのバージョンを一時的に下げることも(非推奨ではあるが)記載があったような気がします。でもその前に、一度立ち止まって考えてみましょう。

なぜ、使用しているbundlerのバージョンが、Gemfile.lockに記載されているbundlerのバージョンより低いと問題になるのか。

以下妄想で申し訳ないのですが(定かな知識をお持ちの方はコメントいただけたら幸いです)、bundlerのバージョンによって、Gemfileを元に取得するGemのバージョンが異なる可能性があるからなのではないかと思います。
新しいバージョンのbundlerが取得する新しいGemで動いていたものを、本番環境で古いbundlerが古いGemを取ってきてしまい動かない、なんて自体が起こりうるのではないのでしょうか。

どのバージョンのGemを取得するかどこかにしっかりと記載されていれば確信を持って「このバージョンのGem!!!!!!!」と取得できます。そう、Gemfile.lockです。
しかしGemfile.lockに記載がないものはGemfileを元にふわふわ探しに行かなければなりません。「なんかいい感じのエナジードリンク買ってこい」と言われた新入社員のごとく。モンスターの緑買ってこい!とか言ってくれ。

私のGemfile.lockは以前bundle installした時のままちょっと更新されてなかったので、Gemfile.lockに書いてないけどGemfileに書いてあるGemがあるという状況を作り出し、みんなを困らせてしまいました。ごめん。

Gemfile.lockは動作を担保する立場の人がバージョン管理するのが良いと思います。

適当なことが書いてあるのに気づいた方は、お手数ですがご連絡いただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0