LoginSignup
2
4

More than 3 years have passed since last update.

[備忘録]Rails開発環境でPostgreSQLを使用する方法

Posted at

環境

Ruby 2.5.1
Rails 5.2.3
PostgreSQL 11.5

ロールの作成

以下のコマンドでロール(ユーザー)を作成する。

psql -U postgres
postgres=# create role [rolename] with superuser createdb login password '[password]';

このコマンドでスーパーユーザー、DB作成可の属性を持ったロールが作成される。
[rolename]はロールの名前、[password]はDBへログインするためのパスワードを入力する。

属性の付与理由は以下の通り

スーパーユーザー
外部キー参照を行うテーブルを作る場合、これが無いとテストで「参照整合性を無効にできない」というエラーが発生するため。
(スーパーユーザーはほぼ全ての権限を持つため、上記エラーを回避するための権限のみを持たせるべきだが方法が不明。)
DB作成可
データベースを作成できる権限を付与するため。
(スーパーユーザーを持っていれば、この属性が無くてもデータベースは作成可能となるが、将来スーパーユーザーを削除した場合を考えて付与する。)

新規プロジェクトの作成

任意のフォルダに移動し以下のコマンドを実行する。

rails new [appname] -d postgresql
cd [appname]

[appname]はアプリ名称を入力する。

設定の変更

config/database.ymlを以下のように変更する。(デフォルトのコメント部分は削除している。)

config/database.yml
default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  # 以下3行を追加
 username: [rolename] #作成したロールの名前
  password: [password] #作成したロールのパスワード
  host: localhost

development:
  <<: *default
  database: [appname]_development #[appname]はアプリ名称と同じ

test:
  <<: *default
  database: [appname]_test #[appname]はアプリ名称と同じ

production:
  <<: *default
  database: [appname]_production #[appname]はアプリ名称と同じ
  username: [appname] #[appname]はアプリ名称と同じ
  password: <%= ENV['TEST_APP_DATABASE_PASSWORD'] %>

データベース作成

以下コマンドでデータベースを作成する。

rails db:create

config/database.ymlの設定により[appname]_developmentと[appname]_testという名称のデータベースが作成される。

テーブルの作成

以下のコマンドでモデルを作成する。

rails generate model [modelname]

[modelname]はモデル名を入力する。
以下のコマンドでmigrateを行う。

rails db:migrate

以下のコマンドでテスト用のmigrateを行う。

rails db:migrate RAILS_ENV=test

テストを行う場合は、デフォルトでgemfileに書かれているテスト用gemの「chromedriver-helper」が非推奨となっておりエラーが発生するため、「webdrivers」に変更する。

参考

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

2
4
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
4