Ruby on Railsを基礎から学ぶ 第5回
〜Railsのdb:createとdb:migrate〜
今回から、いよいよデータベース(DB)を使用していきます。
前回まではDBに意識した説明をしませんでしたが、今回からDBの知識が少しずつ必要になってきます。
RailsでどのようなDBを使用すればよいか? については、別途連載していくことにします。
ただし、その一環として、無償データベースのPostgreSQLとの接続については、先にこちらにまとめたので、参照してください。
当サイトでは、総合的なRails環境導入が目的ですので、
自前サーバ、レンタルサーバ、PaaSなどいろいろな環境での公開手助けをしていくつもりです。
ただし、当面は、Rails環境実装済みPaaSのherokuによる公開を前提とします。ご了承ください。
では、本題に入ります。
1.Db:createとdb:migrate
まずは、いま作成しているパッケージにDBを作りましょう。
db:createコマンドで実行できます。
C:\test_apl>rake db:create ※ここでは、パッケージをtest_aplとしています。各自使用している名前に置き換えてください。 |
続いて、マイグレーションファイルに必要なカラムを追加していきましょう。
(マイグレーションファイルは、C:\(パッケージ名)\db\migrateにあります。これは必ず覚えましょう。)
今回は、入門編で、本にも載ってるmemberテーブルそのままを作ります。
下記のようにしました。
20130514084625_create_members.rb
class
CreateMembers < ActiveRecord::Migration def change create_table :members do
|t| t.integer
:number, null: false
# 背番号 t.string
:name, null: false # ニックネーム t.string
:full_name
# 本名 t.string
:email
# メールアドレス t.date
:birthday
# 生年月日 t.integer
:gender, null: false, default: 0
#
性別 (0:男, 1:女) t.boolean
:administrator, null: false, default: false
# 管理者フラグ t.timestamps end end end |
ありきたりな個人情報に必要なものだけです。
このように編集したら、いよいよmigrateです。
以下のように、db:migrateを実行してください。
C:\test_apl>rake db:migrate ==
CreateMembers: migrating
================================================== -- create_table(:members)
-> 0.6562s ==
CreateMembers: migrated (0.6562s)
========================================= C:\test_apl> |
上のようなメッセージが出れば、正常にマイグレーションが終わりました。
2.追加のマイグレーション
開発中は、DBのテーブルの定義をいろいろと変えながら作成したいものですよね。
そこで、以下のように、migrationコマンドで新しいマイグレーションファイルを作ることができます。
$ rails g migration (マイグレーション名)
C:\test_apl>rails g migration ModifyMembers invoke active_record create
db/migrate/20130515013231_modify_members.rb |
このファイル名は、なんでも良いです。
ためしに、hogeを使ってみましょう。
$rails g migration HogeMembers
C:\test_apl>rake
db:migrate == HogeMembers: migrating
================================================== -- add_column(:members,
:phone, :string) -> 0.2344s --
add_index(:members, :number, {:unique=>true,
:name=>"name_index"}) -> 0.2656s == HogeMembers: migrated (0.5156s)
========================================= C:\test_apl> |
となります。やはり時代はhogeです。
<<注意い>>
もし、間違ってマイグレーションをしないうちに、
rails serverコマンドを実行するとどうなるでしょう?
以下のような画面が出ます。
ただし、サーバは起動しています。
Railsでは、MVCの概念が基本となっています。
仮にDBに接続するような処理がまだ」なかったとしても、マイグレーションによるDBの実体化は必須です。
3.主なRake db:コマンド
■rake
db:abort_if_pending_migrations
なんと実行されてないmigrationを教えてくれます。。
やりそこないのファイルがわかります。
■rake
db:charset
データベースの文字コードを教えてくれます。
基本的にはUTF8であることを確認します。
■rake
db:create
database.ymlの内容でデータベースを作ります。
(ただし、1herokuなどはymlは不要です。ローカルとPaasの設定の違いなど気をつけましょう。)
? RAILS_ENVオプション
★重要★ production(本番)が作りたければ$rake db:create RAILS_ENV=production
■rake
db:drop
createの逆
kou
こう覚えるのが吉
■rake
db:migrate:redo
migrationを指定STEP数だけやりなおす。
STEPの指定はSTEP=nで行えます。
■rake
db:migrate:reset
drop、create、migrateを全てやってくれます。
★重要★ 一度DBを破棄するので、やり直しに使えます。
マイグレーションファイルを整理して、必要なものだけ残して再実行しましょう。
ただし、本番環境の場合、データがふっとぶので、注意が必要です。
■rake
db:version
現在のマイグレーションのバージョンを教えてくる。
以上です。
参考リンクに一覧を載せてくれているブログを載せました。
もう少し多くのコマンドを知りたい方は、こちらを参参照してください。
次回は、データを投入します。postgreSQLを使用した方法と、Rails側から操作する方法に分けて説明します。
また、シードデータ(初回投入データ)についても説明します。お楽しみに!
■ 参考テキスト■
サ改定新版 基礎 Ruby on Rails オイアクス監修 インプレスジャパン
■ 参考サイト■
戦うSEひろろのブログ「[Rails]rake dbコマンド一覧」
http://www.re-labo.com/hiroro-blog/2009/03/rake-db.html
Raccoon's homepage Copyright
(C) 2000-2013 あらいベアー