Ruby on Rails データベース構築設定まとめ

Railsでアプリを作ろうとしており、改めて環境構築から実施したので、データベースの環境構築設定まわりをまとめようと思います。

<スポンサードリンク>

接続情報の設定

dbの接続情報は、config/database.ymlに記述します。

下記に、database.ymlのサンプルを載せます。

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

development:
  <<: *default
  database: <%= ENV['DEV_DATABASE_NAME'] %>
  username: <%= ENV['DEV_DATABASE_USERNAME'] %>
  password: <%= ENV['DEV_DATABASE_PASSWORD'] %>

production:
  <<: *default
  database: <%= ENV['PROD_DATABASE_NAME'] %>
  username: <%= ENV['PROD_DATABASE_USERNAME'] %>
  password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

サンプルのように、database.ymlでは、環境ごとに接続するデータベースを分けて記述することができ、共通の設定に関しては、defaultの情報を引き継ぐことができます。

蛇足ですが、database.ymlは、リポジトリに登録すると思うので、接続情報等は環境変数から取得することをおすすめします。
Railsの環境変数管理gem、dotenvの使い方徹底解説

database.ymlに、記述できる項目は下記の通りです。

項目名 説明
adapter データベースの種類
pool コネクションの上限数
host ホスト名
encoding 文字コード
reconnect 再接続するか
database データベース名
username ユーザー名
password パスワード

データベースの作成

databese.yamlを作成したら、データベースを作りましょう。

% rake db:create

環境を指定したければ、RAILS_ENV=developmentなどをつけてください。

 

<スポンサードリンク>


migrationファイルの作成

次にrailsのコマンドで、migrationファイルを作成します。

% rails generate(g) migration クラス名

modelも一緒に作りたい場合は、下記のようなコマンドです。

rails generate(g) model モデル名

今回は試しにuserテーブルを作成してみます。

railsのコマンドを打つと、下記のように、db/migrateの下にmigrationファイルが作成されます。

% rails g model User name:string balance:integer
Running via Spring preloader in process 1481
      invoke  active_record
      create    db/migrate/20180724114654_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml

作成されたmigrationファイルはこんな感じです。

% cat db/migrate/20180724114654_create_users.rb
class CreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      t.string :name
      t.integer :balance

      t.timestamps
    end
  end
end

このままでは、当然データベースには反映されていないので、migrationコマンドでDBに反映させます。
成功すると下記のようなログがでます。

% rake db:migrate 
== 20180724114654 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0221s
== 20180724114654 CreateUsers: migrated (0.0222s) =============================

これで、テーブルの作成が完了です。

最後に動作確認をしてみます。

接続確認

userを作成して、User.firstで参照して確認しようと思います。

2.4.0 :001 > User.create(name: 'hogehoge', balance: 100)
   (0.2ms)  BEGIN
  SQL (2.1ms)  INSERT INTO "users" ("name", "balance", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"  [["name", "hogehoge"], ["balance", 100], ["created_at", "2018-07-24 11:55:24.811873"], ["updated_at", "2018-07-24 11:55:24.811873"]]
   (0.5ms)  COMMIT
 => #<User id: 1, name: "hogehoge", balance: 100, created_at: "2018-07-24 11:55:24", updated_at: "2018-07-24 11:55:24"> 
2.4.0 :002 > User.first
  User Load (0.6ms)  SELECT  "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT $1  [["LIMIT", 1]]
 => #<User id: 1, name: "hogehoge", balance: 100, created_at: "2018-07-24 11:55:24", updated_at: "2018-07-24 11:55:24"> 

登録も参照もちゃんとできました。
ちなみにですが、Railsでは、id、created_at、updated_atというカラムを自動生成してくれます。便利ですね。

以上で、データベース設定が完了です。

関連

Railsの環境変数管理gem、dotenvの使い方徹底解説

Ruby on Rails 「config」gemで環境ごとに異なる定数をシンプルに管理する

Rails 初めてのAPI作成 1時間でとりあえず動くまで!!

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA