今回は「復習会」ということで、いつものようにチュートリアルをすすめるのではなく、
今までのところで気になっているところ、もう一度聞いておきたいところを復習する会でした!
いつもきれいなスマートニュースさんの素敵オフィスをお借りしました!
概要
自己紹介(何かあれば近況を一言)
復習
復習もグループワークが◎
事前にどのように進めていくかを特に決めていたわけではなかったのですが、
集まってみて「どうする〜?」となったときに、やっぱりグループごとに取り組むというのがいいかなとなり、
4人ずつくらいのグループごとに、復習をして、最後に共有タイムをもつというかたちになりました。
全部で15人いたので、やっぱり全体でなにかをすすめていくっていうのはちょっと難しくなっちゃいますね。
グループごとに活発な復習がおこなわれたようなので、よかったのではないでしょうか!
「rake db:migrate」って何してくれてるんだっけ
グループワークをすることになって、メンバーからひとつずつ疑問をあげてもらったんですが、
時間の制約があったのでそのなかで出来そうなこと、ということで、
マイグレーションって何だっけ、というところを復習することになりました。
(私の疑問でした。ありがとうございました!)
まず、マイグレーションファイルどこにあったっけ
$ db/migrate/
ここに、マイグレート( `rake db:migrate` )したときのタイムスタンプっぽい数字から始まるファイルがあります。
どうやって作られるのかしら
作ってみましょう!
$ rails generate migration test
すると、`db/migrate/20140714121828_test.rb` がつくられました。
この中身をみてると、まだ何もアクションが定義されていません。
そこでここを参考にしてアクションを定義しました。
1 class Test < ActiveRecord::Migration 2 def change 3 create_table(:horses) do |t| 4 t.column :content, :text 5 t.column :remind_at, :datetime 6 end 7 end 8 end
horsesというテーブル名で、text型のcontentというカラムと、datetime型のremind_atというカラムをつくる、ということですね。
アクションを定義して `rake db:migrate` すると、実行されます。
ほんとに出来たの?データベース
ここで便利コマンド!
$ sqlite3 db/development.sqlite3 ".schema"
ベータベースがSQLite3の場合ですが、これを実行すると現在あるテーブルが一覧できます。
こんな風に
CREATE TABLE "horses" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "conent" text, "remind_at" datetime); ...
ステータスも便利
$ rake db:migrate:status
Status のところの Up になっていればマイグレートされている、 Down になっていればマイグレートされていない、ということのようです。
たとえば、ロールバックするとステータスは Down になります。
あるいは、generateしたあとだけどまたマイグレートしていない場合は、Down になります。
(Railsチュートリアルで作成した、demo_appアプリで実行しています)
$ rake db:rollback #直前の1テーブルが対象のようです。 $ rake db:migrate:status Status Migration ID Migration Name -------------------------------------------------- up 20140219121302 Create users up 20140331114755 Create microposts down 20140714121828 Test $ rails generate migration foo invoke active_record create db/migrate/20140719084856_foo.rb $ rake db:migrate:status Status Migration ID Migration Name -------------------------------------------------- up 20140219121302 Create users up 20140331114755 Create microposts down 20140714121828 Test down 20140719084856 Foo
どんなふうに動いているのか、わかってきました!
他のグループのIssueもおもしろいよ!
ミートアップ中、「rake db:migrate のタスクってどこにあるの?」という疑問があって、
トミーがまとめてくれました!!
https://github.com/yochiyochirb/meetups/issues/362
次回
次回は21日(月)が祝日なので、22日(火)です。
以前より課題になっていた、「その日の参加者が一覧できるといいね」のために、
いつもアップデートしている自己紹介ファイルを保存するリポジトリが変わりました。
みなさんご注意〜!