LoginSignup
2
2

More than 1 year has passed since last update.

(メモ) RailsアプリをHerokuへデプロイする際につまずいたところとその対応

Last updated at Posted at 2019-04-26

Rails開発初心者の私が今回RailsアプリをHerokuへデプロイする際につまずいた所とその対応を記述します。

開発環境

Rails 5.1.4

Ruby 2.2.7

Herokuのデプロイエラー

必須ではないが古いバージョンが残っている可能性もあるのでHerokuへデプロイする前に一応Gemfile.lockの内容を全て削除する。

$ bundle して更新

git commit -a -m "commit message" でコミット

$ git push heroku master を実行
↑しかしここでエラーが発生

エラー内容は以下のように出力された。

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).

対応

Gemfileの確認

Gemfileを開いてgem 'sqlite3'が:developmentと:test環境に設定(記述)されているかを確認。

Herokuに最適なgem 'pg'(PostgreSQL)が:production環境に設定(記述)されているかを確認。

Gemfile
group :production do
  gem 'pg'
  gem 'rails_12factor', '0.0.2'
end

database.ymlの確認

DBのYAMLファイルの設定(記述)がされていなかったのでconfig/database.yml を開いてproduction:の部分を以下に変更。

database.yml
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
#

<<省略>>

production:
     encoding: utf8
     adapter: postgresql
     port: ポート番号
     username: ENV['DATABASE_USER']
     host: ホスト名
     database: データベース
     password: ENV['DATABASE_PASSWORD']

※(Heroku Add-ons Data StoresのHeroku Postgresがインストールされている事を前提として)データベース名やユーザー名などの情報を見るにはWeb上でHerokuにログイン -> アプリを選択 -> Resourcesをクリック -> Add-onsのHeroku Postgres :: Databaseをクリック -> Settingsをクリック -> Database Credentialsの横にあるView Credentials...をクリックすると出てきます。

変更が終わったら$ git commit -a -m "commit message"でコミット。

もう一度デプロイ → エラー発生!

エラー内容は以下のように先ほどと同じ

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).

再びGemfileの修正

Gemfilelのgem 'pg'が記述されている部分に問題があるみたいなので見てみる。ActiveRecord から要求されるバージョンが最低限必要みたいなので比較的新しいバージョンを追加。

Gemfile
group :production do
  gem 'pg', '0.19.0'
  gem 'rails_12factor', '0.0.2'
end

再度デプロイ

念のため過去の設定が残ってるとエラーの元になるかもしれないのでGemfile.lockの内容を全て削除。
Gemfile.lockの内容を頻繁に削除するのは不具合の原因になる恐れがあるので頻繁にやらない。

$ bundle して

$ git commit -a -m "commit message" でコミット

$ git push heroku master でHerokuにデプロイ → デプロイ成功!

$ heroku run rake db:migrate でHerokuのDBをマイグレーション

$ heroku open でブラウザに表示

まとめ

  • デプロイエラーが出た際にまずはGemfileに設定(記述)の不足がないかを確認する。
  • config/database.yml内のproduction:設定(記述)に不足や間違いがないか確認する。
  • デプロイエラーが出続けている際はGemfile.lockの内容を思い切って全て削除し、$ bundle installで様子を見てみる。(あまりオススメしない)
  • HerokuにHeroku PostgreSQLをインストールする事を忘れない。(本記事には記述しなかったが意外と忘れやすい)
  • 本記事では記述しなかったが.git/config内[remote "heroku"]内のURLに昔の古いリポジトリのURLが書かれていないかチェックする。

参考文献

HerokuにRailsアプリをデプロイする手順

Herokuにデプロイするときのdatabase.ymlの設定

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2