0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SQLiteからPostgreSQLに変更する方法

Last updated at Posted at 2023-05-30

概要

RailsアプリケーションをHerokuにデプロイを行う矢先、HerokuにSQLiteに対応していない事に気づき、PostgreSQLに変更致しました。その手順を紹介させて頂きます。

手順

ステップ1: PostgreSQLをインストール

まずはじめに、PostgreSQLをシステムにインストールします。Macの場合、Homebrewを利用してインストールできます。

brew install postgresql

ステップ2: Gemfileを更新する

次に、RailsアプリケーションのGemfileを更新します。sqlite3の代わりにpg(PostgreSQL)のgemを使用します。

Gemfile
gem 'pg'

Gemfileを更新したら、以下のコマンドで新しいgemをインストールします。

bundle install

ステップ3: database.ymlを更新する

config/database.ymlファイルを更新して、PostgreSQLデータベースを指すようにします。
以下に例を紹介させて頂きます。今回はアプリケーション名をmyappとさせて頂き、開発環境のデータベース名はmyapp_development、テスト環境のデータベース名はmyapp_testとします。
補足として、my_app_developmentやmy_app_testでも、Rubyの命名規則として問題ありません。

1つ目の設定

こちらは、ローカルでの開発とテストでは特定のデータベースユーザーとパスワードを使用し、本番環境(Heroku)ではDATABASE_URLを使用するシナリオを想定しています。

config/datebase.yml
default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

2つ目の設定
こちらは、全ての環境(ローカル開発、テスト、本番)で特定のデータベースユーザーとパスワードを使用し、本番環境(Heroku)では加えてDATABASE_URLを使用するシナリオを想定しています。

config/datebase.yml
default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: myapp_development
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>

test:
  <<: *default
  database: myapp_test
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>

一般的には、Herokuを使った本番環境ではDATABASE_URLを使用し、それ以外の環境では独自のユーザー名とパスワードを使用する1つ目の設定が良いと思います。しかし、どのような環境を持っているのかなど、どの設定が適切か場合によると思います。

ステップ4: データベースを作成する

新しい設定でデータベースを作成します。

rails db:create

ステップ5: マイグレーションを実行する

最後に、データベースのマイグレーションを実行します。

rails db:migrate

以上の手順で、RailsアプリケーションのデータベースをSQLiteからPostgreSQLに変更することができます。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?