
Rails デフォルトのデータベースは SQLite3 です。
データがファイル1つで済むことなどから、開発段階では重宝します。
が、パフォーマンスを鑑みると、
本番環境では、PostgreSQL などの本格的なデータベースを用いるほうが良いでしょう。
PostgreSQL そのものについては、以下を参照してください。
PostgreSQL での留意点を挙げます。
rails new app_name -d postgresql
でWEBアプリを作成するのがラクです。
ログインロールも作成しておく必要があります。
こちら を参照してください。
この記事は PHP版 WEBアプリ用なので、必要な情報をピックアップしてください。
\config\database.yml を編集し、以降は、SQLite3 と同様に、
ruby bin/rails db:migrate
などを実施します。
自動テストで PostgreSQL を使用する場合は、
ログインロールの権限を Superuser にする必要があるかもしれません。
本番環境で Superuser は不要(というか危険) なので、
本番環境とテスト環境でログインロールを変えましょう。
開発環境は SQLite3 で、本番環境は PostgreSQL にする、などの場合は、
一旦、デフォルトで WEBアプリを new しておき (全部 SQLite3 になる)、
後から \config\database.yml を直接編集します。
一例を挙げると、
production:
primary: &primary
adapter: postgresql
encoding: unicode
database: book_mgmt
username: book_mgmt
password: <%= ENV["BOOK_MGMT_DB_PASSWORD"] %>
host: localhost
port: 5432
cache:
<<: *primary
queue:
<<: *primary
cable:
<<: *primary
簡単のため、
cache、queue、cable に対しても primary と同じデータベースを使用していますが、
本番環境では、それぞれ別のデータベースを用意してください。
セキュリティ上、password はコードに直接書かず、
環境変数で設定するのが良いでしょう。
前節と同様、ログインロールを用意します。
以下のコマンドを実行し、データベースを生成します。
bundle add pg
$env:RAILS_ENV= “production”
$Env:BOOK_MGMT_DB_PASSWORD = “book_mgmt”
ruby bin/rails db:create
ruby bin/rails db:migrate
ruby bin/rails db:seed
参考リポジトリ: https://github.com/Bonv-dev/book_mgmt/commit/6e84bdc