【Rails】db:createで生成するDBの名前を変更する方法

rails-prograshi(プロぐらし)-kv Rails
記事内に広告が含まれていることがあります。

Ralisの、rails db:create コマンドを実行すると、DBを生成することができます。

このときのDBの名前は、 プロジェクト名_development や プロジェクト名_production となります。

例えば、Railsアプリの名前がappであれば、app_developmentとなります。

この生成されるDB名を変更する方法についてです。

db:createで生成するDB名を指定する方法

RailsのDBまわりの設定は、database.yml に記述されています。

各環境毎に、development, test, productionが用意されています。

db:createで生成するDB名を指定するには、各環境のdatabaseの値を変更するだけです。

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 } %>
  host: db
  username: postgres
  passowrd: password

development:
  <<: *default
  database: rails_aa_development  #ここ

test:
  <<: *default
  database: rails_aa_test #ここ

production:
  <<: *default
  database: rails_aa_production #ここ
  username: rails_aa
  password: <%= ENV['RAILS_AA_DATABASE_PASSWORD'] %>

default: &defaultとは?

default: &defaultというのは、デフォルトとなる設定内容で、&default でこの設定にでdefaultという名前をつけています。

こうすることで、この内容を<<: *default で呼び出すことができます。

<<: *default とは?

defaultという名前が付けられた内容をまるごと呼び出しています。

development:
  <<: *default
  database: rails_aa_development

↓ 以下と同じです。

development:
  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 } %>
  host: db
  username: postgres
  passowrd: password
  database: rails_aa_development


実例:名前を変更したDBを生成する

例として、db_devという名前でDBを生成します。

database.ymlの変更

database.ymlのdevelopmentの部分を次のように変更します。

development:
  <<: *default
  database: db_dev

DBの生成

rails db:create を実行すると、開発環境(development)では、devlopmentのDBとtestのDBの2つが生成されます。

# rails db:create
Created database 'db_dev'
Created database 'rails_aa_test'

Created database ‘db_dev’ で指定したDBが生成されています。

過去にrails db:create を実行済みの場合

上記例は、初回の rails db:createなので、testのDBも生成されています。もし既に作成済みの場合は、already existsが表示されます。

# rails db:create
Created database 'db_dev'
Database 'rails_aa_test' already exists


Production環境のDBを生成する方法

デフォルトの設定では開発環境(development)になっています。これを本番環境(Production)用のDBを作成するには以下のようにします。

db:create RAILS_ENV=production
タイトルとURLをコピーしました