Reinvent Yourself

技術メモや日々思っていることなど

Herokuのmigrate時のエラー(Gem::LoadError: Specified 'postgresql')を解決

はじめに

Heroku上でmigrateを実行した際にエラーになったので備忘録としてメモしておく。

環境

ruby 2.4.3p205
Rails 5.1.4
Mac OS X 10.13.3

エラー内容

migrate時にエラー

postgresqlがアダプタに指定されているのにgemがロードできないのでGemfileに「gem 'pg'」を追加せよとのこと。gem 'pg'は入れてあったので疑問に思ったが、その後のメッセージにて、バージョンに言及されていた。バージョンが1.0.0になっているが、~> 0.18に落とす必要がある。

% heroku run rake db:migrate 
Running rake db:migrate on ⬢ xxxxxx-xxxxxx-xxxxx... up, run.4943 (Free)
rake aborted!
Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded. Add `gem 'pg'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

(省略)

Caused by:
Gem::LoadError: can't activate pg (~> 0.18), already activated pg-1.0.0. Make sure all dependencies are added to Gemfile.

pg gemのバージョンを指定

gem 'pg'

gem 'pg', '~> 0.18'

へ変更

bundle installを実行

ひとまずローカル環境でbundle installし、pg gemのバージョンが1.0.0から0.21.0へ変更されたことを確認した。

% bundle install
(省略)
Fetching pg 0.21.0 (was 1.0.0)
(省略)

コミットしてHerokuへアップロード

% git add . 
% git commit -m "Changed pg gem version"                                                                                            [21:48:05]
% git push heroku master

migrate再実行

再度herokuにてmigrateを実行し、無事に処理が完了したことを確認した。

% heroku run rake db:migrate                                                                                                        [21:49:05]
Running rake db:migrate on ⬢ xxxxxx-xxxxxx-xxxxx... up, run.3942 (Free)

(省略)

   (1.2ms)  COMMIT
   (0.6ms)  SELECT pg_advisory_unlock(2211240757154865870)