PostgreSQLでHerokuプッシュが成功したときに試したこと
移転しました。3秒後に移転先へ移動します。
以前の記事で、Herokuへのデプロイ時にPostgresql関連のエラーが出て苦戦したことがありました。
こちら↓
http://nojishio-notes.hatenablog.com/entry/2018/03/26/231821
そのときはPostgresqlの代わりにmysqlで代用したことでheroku openさせることができました。
今回はHerokuでPostgresqlを使い、同じようなエラーは出たけど、それも解決できたのでご紹介します。
作業環境
Rails 5.0.1
Ruby 2.5.0
mysql2 0.4.10 (ローカル環境)
- エラー内容:Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded.
- 対処:pgのバージョンを0.19.0に指定
- まとめ
エラー内容:Gem::LoadError: Specified 'postgresql' for database adapter, but the gem is not loaded.
(エラー発生までの経緯)Gemfileにpgを追加
まず、自分の作業経緯を振り返る。
1:Gemfileにpgを追加
gem 'pg', group: :production
group: :production
で本番環境はPostgresqlを使うよう指定しています。
2: bundle install
を実行
3:database.ymlに以下の記述を追加
production: <<: *default adapter: postgresql encoding: unicode pool: 5
※もともとのproduction:~の記述箇所を上の内容に書き換える ※ymlファイルでは改行場所やスペースなどでエラーが出ることがあるので、既存の記述と見比べるなどして特に気を付ける。
4:この状態でherokuにプッシュまで行う
git add .
git commit -m "コメント"
heroku create
(初回の場合のみ)
git push heroku master
ここでエラー発生!
5 :発生したpgエラー
remote: 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).
対処:pgのバージョンを0.19.0に指定
参考記事。バージョン指定がポイントのようです。
Gemfileでpgの記述をバージョン指定して、以下のように書き換えました。
gem 'pg', '~> 0.19.0', group: :production
これでbundle install
これで再度herokuにプッシュまで行う
git add .
git commit -m "コメント"
git push heroku master
うまくいきました!!
これで
heroku run rake db:migrate
実行
heroku open
でアプリが開く
ちなみに
bundle install
したときの画面で
Fetching pg 0.19.0 (was 1.0.0) Installing pg 0.19.0 (was 1.0.0) with native extensions
pgは、もともと1.0.0だったけど0.19.0にバージョン下げてたようですがうまくいった。 バージョンの違いによるエラー?
まとめ
成功した手順 * pgのバージョンを0.19.0指定で記述 * database.yml書き換え * git addとcommit
でPostgresqlを使ってherokuにプッシュが成功。
ちなみに私はこのあとのheroku run rake db:migrate
実行で別のエラーが出まして、
別記事に書きました↓
Qiitaでも書きました↓
ここまで読んでくださり、ありがとうございました^^