背景
Herokuにデプロイして
bash
$ heroku run rails db:migrate
とかしたら
bash
/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require`: cannot load such file -- bundler (LoadError)
なんて具合の初心者がデプロイ成功して安堵したところに突然襲いかかるようなエラー。
よく質問も見かけるわりにググってもヒットしづらい印象を受けた。
なのでここにでも書いておきます。
それほど難しいエラーでもないので、時間の浪費を防げれば幸い。
原因と解決
原因は大抵rubyのビルドパックが入ってないからなんだけど...
https://dashboard.heroku.com/apps/<アプリ名>/settings
のBuildpacks
って項目を見てばビルドパックが入ってるか確認できます。
bash
$ heroku buildpacks:add heroku/ruby
で追加。ダッシュボードから追加するのもあり。
追加したらデプロイし直す。これをしないと反映されない。
おまけ
Rails5.1以上だとyarnサポートによりyarn install
を行う必要がある。
rubyのビルドパックにはyarn install
を行うコマンドがないので
nodejsのビルドパックを追加する必要が出てくる
bash
$ heroku buildpacks:add --index 1 heroku/nodejs
$ heroku buildpacks:add --index 2 heroku/ruby
indexを指定してあげるのがミソ。この順番が大事。