postgres.appを利用してRailsの開発環境からPostgreSQLを使ってみる

More than 1 year has passed since last update.


はじめに

オリジナルアプリ開発を始めるにあたり、SQLiteでなく開発からPostgreSQLを使用してみようと思い作業を始めてみたのですが、思いの外わからないことだらけで色々調べたり試行錯誤をしたので、やったことをこちらでまとめてみました。


開発環境

macOS High Sierra 10.13.4

Ruby 2.5.0

Ruby on Rails 5.2.0


postgres.app

PostgreSQLを使うにはローカルにPostgreSQLが使える環境がないとダメだということがわかりました。

調べたところ、postgres.appはインストールして起動するだけで簡単にPostgreSQLが使えるということで導入してみました。


ダウンロードとインストール

下記からpostgre.appをDLして、アプリケーションフォルダに移動します。

http://postgresapp.com/


起動してコマンドラインツールを使用できる様にする

postgre.appを起動して右の方にあるinitializeのボタンを押すと使えるようになります。

そのあとターミナルで下記を実行。

実行するとPostgres.appで提供されているコマンドラインツールを使用できるようになります。

$ sudo mkdir -p /etc/paths.d &&

echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

途中パスワードを求められたら入力します。


pgのインストール

Rubyで使うには下記を実行しろと書いてあったので、実行してgem pgをインストールします。

$ sudo ARCHFLAGS="-arch x86_64" gem install pg


Railsで新しいアプリを作成する

データベースにPostgreSQLを指定して新しくアプリを作成します。

$ rails new [YOUR_APP_NAME] -d postgresql

config / database.ymlを下記の通り変更します。


config/database.yml

development:

adapter: postgresql
database: [YOUR_DATABASE_NAME] #下記で新しく作成するDBの名前を入力、もしくは既存のDBを指定
host: localhost


PostgreSQLに新しいDatabaseを作成

今回はアプリ用に新しいデータベースを作成することにしました。

ターミナルからPostgreSQLに接続します。

新しくユーザーを作った方がいいかどうかがわからなかったのですが、調べたらあとで所有者の変更ができそうなので今回はpostgresで作成しました。

$ psql -U postgres

postgres=# create database [YOUR_DATABASE_NAME];
CREATE DATABASE

CREATE DATABASEと表示され、postgres.appに戻って見るとデータベースが作られています。

次回からはpostgres.appでDBをダブルクリックすると接続できます。


サーバーを立ち上げてみる

$ rails s

サーバーを立ち上げてアクセスしたら、無事Railsの画面が表示されました。


おまけ

無事Railsの画面が表示されたものの、このまま進めるのも不安だったためscaffoldでサンプルアプリを作成してDBに登録てみました。

users_–_sample_–_sample.png

確認したところちゃんと反映されていたので、本当にこれで終わりとします。

ちなみに上記画像はPostgreSQLのGUIツールPosticoです。

なんとなくこちらも入れてみましたが中身がサクッと見れて良いかも…と思ってます。


まとめ


  • RailsやRubyと同じようにデータベースもローカルに環境構築が必要

  • 今回はアプリで代用したがHomebrew経由でDLしてインストールするやり方もある

  • もう少しPostgreSQLについても学ぶ必要がある

ローカルの開発環境について知らないことが多すぎて調べるのに1日がかりと、膨大な時間がかかってしまいました…。

なんとか動くところまで持ってこれましたが、もう少し色々な仕組みを理解する必要があるなと感じました。

おかしなところなどございましたらご指摘頂けますと幸いです。


参考:

起動するだけで使えるPostgres.appでのDB作成

Ruby on Railsの開発環境でPostgreSQLを利用する