tl:dr
あるRailsアプリケーションをHerokuを使ってデプロイしようとした際に、
bundlerに関してのエラーが出たので、その備忘録的な感じで本記事を書きます。
過程
先日、Rubyのversionを2.5.3
から2.6.0
にupした際に
$ gem i bundler
$ gem i rails
を実行。こうすると、stableな最新のversionのgemがインスコされるので、
bundlerのversionが2.0.1
で入ってしまった。。。
ローカルでは動くので問題ないのですが、色々ググるとherokuだと、まだ対応していならしい。
やってみたこと
$ heroku buildpacks:set https://github.com/bundler/heroku-buildpack-bundler2
このコマンドを実行するとうまくいくと記述されている記事もありましたが、それだと$ git push heroku master
は通りますが、heroku run rails db:migrate
でコケる、、、
結論
remote: /tmp/d20181113-113-10miq1y/bundler-1.15.2/gems/bundler-1.15.2/lib/bundler/lockfile_parser.rb:108:in warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
エラーが出てしまいます。
このissueを読むとbundler2のbuildpackを設定してもまだ対応されてないよ!との記述があったため、諦めてbundlerのverionを1.17.3
に下げたら動きました。
bundlerのversionの下げ方
$ gem uninstall bundler # bundlerをアンインストール
$ gem install bundler -v 1.17.3 # version明記
$ rm Gemfile.lock # Gemdile.lockがgemのversionを明記しているため、一旦削除
$ bundle install
$ git 関連の諸々 ,,,
$ git push heroku master
$ heroku run bash
$ rails db:migrate or $ bundle exec rails db:schema:load
でうまくいくかと思います。