1.3 データベースの設定
データベースに接続する
Railsは起動時にconfig/database.yml
の情報を使ってデータベースをセットアップします。
SQLiteの設定例
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
MySQLの設定例
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /tmp/mysql.sock
development:
<<: *default
database: sample_development
test:
<<: *default
database: sample_test
production:
<<: *default
database: sample_production
設定項目の意味
項目 | |
---|---|
adapter | データベース種類 |
database | データベース名 |
host | サーバ名またはIPアドレス |
socket | ソケットのパス 例)/tmp/mysql.sock |
port | ポート番号 |
username | ユーザ名 |
password | パスワード |
encoding | 文字コード |
pool | コネクションプール数 |
データベースの基本操作
データベースはrails db:create
コマンドで作成することができます。config/database.yml
の情報を元にデータベースが作成されます。
$ rails db:create
# 結果
Created database 'db/development.sqlite3'
Created database 'db/test.sqlite3'
rails db:drop
コマンドでデータベースを削除することができます。
$ rails db:drop
# 結果
Dropped database 'db/development.sqlite3'
Dropped database 'db/test.sqlite3'
データベースをリセットする
rails db:reset
コマンドは、rails db:drop
、rails db:create
を行い、db/schema.rb
からテーブルの情報を復元します。
$ rails db:reset
# 結果
Dropped database 'db/development.sqlite3'
Dropped database 'db/test.sqlite3'
Created database 'db/development.sqlite3'
Created database 'db/test.sqlite3'
データベースに初期データを追加する
db/seeds.rb
# coding: utf-8
Model.create(name: "RailsCookBook 1")
Model.create(name: "RailsCookBook 2")
rails db:seed
コマンドは、db/seeds.rb
に記述されている処理を実行します。