エラーは食べもの。

WPへ引越。こちらは改装中。。。

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.

(エラー発生までの経緯)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でも書きました↓

ここまで読んでくださり、ありがとうございました^^