Fippiyのプログラム学習内容アウトプットBlog

日々の学習内容をアウトプットして振り返りを実施する。

本番環境でPropertyレコード登録ができていなかった問題を解決する【1】開発と本番環境をあわせる

ここまで基本的な本情報の登録及びテストを実装してきました。

開発環境ではひととおりの問題はクリアしてきました。一部後回しにしている内容はありますが…。

 

しかし、動作確認しているなかで所有書籍の登録及び編集について、デプロイ環境でうまく動作していないことが分かりました。

開発環境と本番環境での大きな違いの一つに、使用しているDBが異なるという点があります。

開発環境ではMySQL、本番環境はPostgreSQLを使用しています。

原因調査の為にDBを一端そろえて原因調査をしてみることにしました。

こちらの対処を実施していきます。

今回の目的

デプロイ環境での動作失敗問題を解決する為、開発と本番環境をより近い物にするために、開発環境にPostgreSQLを導入する。

なぜやるか

環境をそろえることで、環境差異による問題点を解決するため

やりたいこと

開発環境にPostgreSQLを導入する

PostgreSQLのDBを作成する

LaravelでPostgreSQLを使える様にする

やったこと

一時対処をする

開発環境にPostgreSQLを導入する

LaravelでPostgreSQLを扱えるようにする

実施内容

所有書籍登録ができていないことに気づく

開発で出来ていたが、実は動いてなかった

デプロイしたアプリに対して実際に動作するか度々確認はしていましたが、途中で所有書籍を新規登録するのがうまく動作していないことが分かりました。

その時点で調査を一度しようとした…のですが、開発環境では問題ないのに本番環境は全く動かず…。

まずは一端ゴールを目指して作成を進めていたということもあり、後回しにしてました。

暫定対処によって一端動作するようにした

所有書籍の登録時にエラーがでており、バリデーション設定でエラーが出ているというところまで突き止めたので、このバリデーションに対して一端コメントアウトして暫定対処としていました。

 

テスト時に暫定対処ではエラーとして残る

しかし、このままではテストが全て通りません。

バリデーションエラーに対してのテストも行うので、バリデーション設定そのものをコメントアウトして除外しているので、エラーにはなりません。

 

開発環境にPostgreSQLを導入する

本番環境設定を細かく合わせるのは大変

本番環境の問題を解決する為に、毎回修正点をgithubに反映し、デプロイするのは結構面倒なことになるので、冒頭でも出てきましたが使用しているDBをまずあわせて、それから開発環境で問題をまずは解決することとしました。

 

開発環境にPostgreSQLを導入する  

導入にあたっては、こちらを参考にさせて頂きました、ありがとうございます。 

qiita.com

まずは、インストール状況を確認するために、バージョン確認コマンドを実施

$ postgres --version
postgres (PostgreSQL) 11.1

既にインストールされており、バージョンが表示されました。

 

その他、こちらも参考にさせて頂きました、ありがとうございます。

qiita.com

qiita.com

 

PostgreSQLサーバを開発環境で起動する

開発環境でPostgreSQLを利用するには開発用のサーバを立ち上げておく必要があります。

$ postgres -D /usr/local/var/postgres

Laravelのローカルサーバも動作させたいので、新しくターミナルを起動して動作させます。

 

PostgreSQLでDBを作成する

$ createdb book-property-management -O owneruser

Postgreサーバの起動状態で実施。owneruserは作成したユーザーで実施。

 

DB作成確認

DBが作成されていることを確認します。

$ psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
book-property-management | Ownername | UTF8 | en_US.UTF-8 | en_US.UTF-8 |

PostgreSQL用のデータベースが作成されいます。

 

LaravelでPostgreSQLを扱う

設定するにあたり、こちらを参考にさせて頂きました、ありがとうございます。

qiita.com

 

環境設定を実施する

開発環境の環境設定にPostgreSQL設定を追加します 。

# ~/.env 

DB_CONNECTION=pgsql
DB_HOST=localhost
DB_DATABASE=book-property-management
DB_DATABASE_TEST=book-property-management_test
DB_USERNAME=owneruser
DB_PASSWORD=password

新たにPostgreSQL用設定を追加しました。

MySQL設定についてはコメントアウトして除外しました。

 

開発環境で動作することを確認する 

PostgreSQLで作成したDBとLaravel設定が完了したので、動作することを確認します。

まず、Laravelのローカルサーバを再起動。(そのままアクセスしたらMySQLのままだった)

 

次に、DBを使用するために、マイグレーションファイルを利用してDBを作成します。

 

PostgreSQLのDB準備が整いましたので、改めて新規登録をしてログインを実施。

これで開発環境でPostgreSQLを利用してLaravelアプリが動作することが確認できました。

 

この状態で、バリデーションエラー問題の対処を実施していきます。