後へ      Topへ      次へ

参考:PostgreSQL

上級
Rails デフォルトのデータベースは SQLite3 です。
データがファイル1つで済むことなどから、開発段階では重宝します。
が、パフォーマンスを鑑みると、
本番環境では、PostgreSQL などの本格的なデータベースを用いるほうが良いでしょう。

PostgreSQL そのものについては、以下を参照してください。

PostgreSQL での留意点を挙げます。

全ての環境で PostgreSQL を使う場合

  1. rails new app_name -d postgresql
    でWEBアプリを作成するのがラクです。

  2. ログインロールも作成しておく必要があります。
    こちら を参照してください。
    この記事は PHP版 WEBアプリ用なので、必要な情報をピックアップしてください。

  3. \config\database.yml を編集し、
    使用するデータベース名やログインロールに変更します。
    Privileges は、最低限以下をOnにします。
  4. 更に、SQLite3 には無かったですが、
    データベースを生成するため、各環境毎に最初の1回だけ、
    ruby bin/rails db:create
    が必要です。

以降は、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 はコードに直接書かず、
環境変数で設定するのが良いでしょう。

  1. 前節と同様、ログインロールを用意します。

  2. 以下のコマンドを実行し、データベースを生成します。
    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


後へ      Topへ      次へ