【rails】デプロイする(データベースの設定)

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

SQLiteでは本番環境に適していない

前回まででAWSの設定までした

今回は、デプロイに適したデータベースサーバーを用意する

これまで使ってきたSQLiteは、本番環境には向かない(SQLの中でも小さいから)

レコード数、ユーザーからのアクセス数が増えたときにSQLiteは難しい

これまではRailsの中にアプリケーションサーバーとデータベース(SQLite)があった

→デプロイするなら、Railsの外にデータベースサーバーを用意する必要がある

PostgreSQL(ポストグレスレスキューエル、ポスグレ)をインストールしていく


PostgreSQLのインストール(Mac)

以下の手順でインストールする

# インストール
brew install postgresql

# バージョンが表示されていれば、インストール完了
postgres --version
# => postgres (PostgreSQL) 14.13 (Homebrew)

# 初期化
initdb /usr/local/var/postgres -E utf8

# pcを起動するたびにデータベース・サーバーを起動する
pg_ctl start -D /usr/local/var/postgres
# => server started 

Railsのデータベースを設定する

Gemfileを開く

PostgreSQLを使うためのライブラリ(Gem)を入れる

sqlite3を削除して、代わりにgem 'pg' '>= 0.18', '< 2.0'を追加する

# Use sqlite3 as the database for Active Record
 # ↓削除する
gem 'sqlite3', '1.5.0'
 # ↓追加する
gem 'pg', '>= 0.18', '< 2.0'

インストールする

bundle install

PostgreSQLの設定をする

config/database.ymlを開く

sqlite3の設定が書いてあるので、すべて消す

以下のコードを書く

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  timeout: 5000
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: blogapp_development

test:
  <<: *default
  database: blogapp_test

production:
  <<: *default
  database: blogapp_production
  username: blogapp
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>

覚えるのは難しいけど、「PostgreSQLを使う」と最初に設定していれば、Railsが勝手に作ってくれる

(なにもしなくてもSQLite3のファイルを作ってくれたみたいに)


データベースを作る

rails db:create
# => Created database 'blogapp_development'
# => Created database 'blogapp_test'


テーブルを作る

rails db:migrate

rails db:seed

これでPostgreSQLが使えるようになる


注意すること
  • データベースサーバーを起動すること
    → pg_ctl start -D /usr/local/var/postgres
  • データベースを作って「db:create」から、「db:migrate」を実行する

SQLiteに慣れていると忘れがちなので、上記に注意すること!

#DAY26