Ruby on Railsを基礎から学ぶ 第5回

Railsdb:createdb:migrate

 

今回から、いよいよデータベース(DB)を使用していきます。

前回まではDBに意識した説明をしませんでしたが、今回からDBの知識が少しずつ必要になってきます。

RailsでどのようなDBを使用すればよいか? については、別途連載していくことにします。

ただし、その一環として、無償データベースのPostgreSQLとの接続については、先にこちらにまとめたので、参照してください。

当サイトでは、総合的なRails環境導入が目的ですので、

自前サーバ、レンタルサーバ、PaaSなどいろいろな環境での公開手助けをしていくつもりです。

ただし、当面は、Rails環境実装済みPaaSherokuによる公開を前提とします。ご了承ください。

 

では、本題に入ります。

 

1.Db:createdb: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

 

dropcreatemigrateを全てやってくれます。

重要★ 一度DBを破棄するので、やり直しに使えます。

 マイグレーションファイルを整理して、必要なものだけ残して再実行しましょう。

 ただし、本番環境の場合、データがふっとぶので、注意が必要です。

 

rake db:version

 

現在のマイグレーションのバージョンを教えてくる。

 

以上です。

参考リンクに一覧を載せてくれているブログを載せました。

もう少し多くのコマンドを知りたい方は、こちらを参参照してください。

 

次回は、データを投入します。postgreSQLを使用した方法と、Rails側から操作する方法に分けて説明します。

また、シードデータ(初回投入データ)についても説明します。お楽しみに!

 

 

     参考テキスト■

サ改定新版 基礎 Ruby on Rails オイアクス監修 インプレスジャパン

http://www.oiax.jp/rails3book

     参考サイト■

戦うSEひろろのブログ「[Rails]rake dbコマンド一覧」

http://www.re-labo.com/hiroro-blog/2009/03/rake-db.html

 

 

戻るとっぷ次へ

 

Raccoon's homepage Copyright (C) 2000-2013 あらいベアー