【Rails】 アプリケーションでPostgresSQLを使用する準備

Ruby

下記の記事を参照にさせていただきながら行ったメモの内容となります。

rails6 Postgresqlを使用するまでの手順
rails6で、Postgresqlを使用するまでの手順を記述してます。railsのバージョンは6.1.0です。 目次 1. 環境2. Gemfile編集3. bundle install実行4. database.yml編集5. DB作成

動作確認環境

  • Windows10(x64)
  • Rails 6.1.7.3
  • Ruby 3.0.4p208

Gemfile編集

gem ‘pg’ を追記し、既存のgem ‘sqlite3’, ‘~> 1.4’ を消去する

上記の状態で、プロジェクトのルートディレクトリでbundle installを実行します

config\database.yml編集

ローカル環境にPostgresをインストールした際の情報を★★★★★の箇所にあてはめつつ以下のような感じで編集します

# SQLite. Versions 3.8.0 and up are supported.
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: postgresql
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: ★★★★★
  password: ★★★★★
  host: ★★★★★
  port: ★★★★★
  timeout: 5000

development:
  <<: *default
  database: sample_development

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: sample_test

production:
  <<: *default
  database: sample_production

上記の状態で、ルートディレクトリでbundle exec rails db:createを実行します

参考;

https://railsdoc.com/page/rails_db_create
https://qiita.com/windhorn/items/0f58866291f8273f18fb

確認

ローカルのpgAdminを開いてみると、下記のようにDBが作成されています。

rails s でサーバーを起動してみます。

立ち上がったので問題ないように思います

rails new でもpostgressを設定できる

rails new でも使用するDBを指定してプロジェクトを作成できます。以下の内容で試してみました。

動作確認環境

  • Windows10(x64)
  • Rails 6.1.7.4
  • Ruby 3.0.4p208

rails new {プロジェクト名} -d postgresql のようにコマンドを入力します。

※謝ってコマンドを打ってしまったときにInvalid value for –database option. Supported preconfigurations are: mysql, postgresql, sqlite3, oracle, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.と出てきたので、postgresqlの他にもoracleとかsqlserverも使えるみたいです。

その後bundle install –path vendor/bundleを実行し、config\database.ymlの★★★★★をPostgresをインストールしたときの情報を見ながら適宜修正し、bundle exec rails db:createを実行します。

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: ★★★★★
  password: ★★★★★
  host: ★★★★★
  port: ★★★★★

development:
  <<: *default
  database: sample_2_development

test:
  <<: *default
  database: sample_2_test

production:
  <<: *default
  database: sample_2_production
  username: sample_2
  password: <%= ENV['SAMPLE_2_DATABASE_PASSWORD'] %>

rails s で起動し、http://127.0.0.1:3000/へアクセスするとエラーとかは表示されず下記のようになったので問題ないように思います

タイトルとURLをコピーしました