はじめに
オリジナルアプリ開発を始めるにあたり、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
を下記の通り変更します。
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に登録てみました。
確認したところちゃんと反映されていたので、本当にこれで終わりとします。
ちなみに上記画像はPostgreSQLのGUIツールPosticoです。
なんとなくこちらも入れてみましたが中身がサクッと見れて良いかも…と思ってます。
まとめ
- RailsやRubyと同じようにデータベースもローカルに環境構築が必要
- 今回はアプリで代用したがHomebrew経由でDLしてインストールするやり方もある
- もう少しPostgreSQLについても学ぶ必要がある
ローカルの開発環境について知らないことが多すぎて調べるのに1日がかりと、膨大な時間がかかってしまいました…。
なんとか動くところまで持ってこれましたが、もう少し色々な仕組みを理解する必要があるなと感じました。
おかしなところなどございましたらご指摘頂けますと幸いです。
参考:
起動するだけで使えるPostgres.appでのDB作成
Ruby on Railsの開発環境でPostgreSQLを利用する