[Rails]実践-日程調整アプリ(1)

Rails勉強会@東北第4回

前回から、フライトさんに場所をご提供いただいてます。(ありがとうございます。)

このビルは、若かりし頃に常駐していた思い出の地でもあります(当時、2Fに某社が入ってまして)。当時は1Fに ローソンとか入ってなかったなぁ・・・。

フロアに入ると、お仕事中の方々もいらっしゃる。休日出勤ご苦労様です。ん?その中に見覚えのある後姿が・・・おぉ、この間まで一緒に仕事してたUさんではないですか!懐かしくて、しばし雑談。がんばって!!

まずはランチを食べながら、自己紹介。皆さん工夫を凝らしたPPを持参。たのしいです。

その後、大久保さん、藤岡さんのセッション(またしてもガンダムねたw。しかもパワーアップしてます。ツボ突かれました。)が続きます。ご両名とも相変わらずレベル高いです。ただただ”スゲー”と唸るばかりです。(内容は割愛させていただきます。ごめんなさい。)

3つ目は、いよいよ実践!一からアプリを作ってみようということで、片平さん主導でみんなで設計、たまたまWindowsマシンを持参した(初心者代表の)私が打ち込んでいく、ということになりました。

尚、開発環境に関しては、こちらのエントリ「[Rails]はじめよう! InstantRailsで。」を参照ください。

お題目は、「日程調整アプリ」ということで、勉強会や飲み会(?)のスケジュール調整に使うWEBアプリを作っていきます。仕様の詳細は森さん作成の議事録および、大久保さんのER図を参照ください。

で、 ワタシの方は、せっかくなので、マチガイとそのリカバリ方法も含めて、実況風に書いてみたいと思います。

  1. Railsのプロジェクトを作る。(アプリ名は”adjuster”)

    InstantRailsのメイン画面から”Create New Rails App…”をクリックします。
    instatntrails_009.gif
    すると、DOS窓が開きますので、”rails adjuster”と入力します。
    instatntrails_010.gif
    ↓生成されました。
    instatntrails_011.gif

  2. phpMyAdminで”adjuster_development”のスキーマつくる。

    InstatntRailsから、Configure->Databaseを選択します。
    instatntrails_012.gif
    ブラウザが起動し、phpMyAdmin画面が開きますので、”新規データベースを作成する”欄に”adjuster_development”と入力して”作成”ボタンをクリックします。
    instatntrails_013.gif
    ↓できました。
    instatntrails_016.gif

  3. モデル(user、schedule、event)を作る。

    adjusterプロジェクトのディレクトリに移動して、”ruby script/generate model user”と入力します。
    instatntrails_014.gif
    ↓できました。
    instatntrails_015.gif
    同様に、schedule、eventのモデルも作ります。

  4. userモデルのカラム定義をする。

    モデルをgenerateすると、db/migrateディレクトリ下に、*.rbファイルが生成されます。
    instatntrails_017.gif
    001_create_users.rbを編集して、カラム定義(メソッド?)を追加します。
    instatntrails_018.gif

  5. db:migrateしてみる。

    じゃ、ここで”rake db:migrate”して、DBテーブルを生成してみます。
    instatntrails_019.gif
    ↓できました。
    instatntrails_020.gif
    phpMyAdminで確認してみます・・・おぉ!できてます。
    instatntrails_021.gif

  6. 続けて、scheduleモデルのカラム定義をする。

    002_create_schedules.rbを編集して、カラム定義を追加します。
    instatntrails_022.gif

  7. またdb:migrateする。

    “rake db:migrate”して、schedulesテーブルを生成したいと思います。
    instatntrails_023.gif
    ・・・あれ?何も出ない。なんで?
    instatntrails_024.gif
    あ、そうか!さっきのdb:migrateで、空のschedulesとeventsが作られちゃったんだ・・・。まずったぁ。

  8. db:migrate VERSION=で初期状態に戻す。

    ということで、一旦DBを空にすることにしました。
    instatntrails_025.gif
    “VERSION=”と書くと、”VERSION=0″と同じ意味なんだそうです。へぇ。
    instatntrails_026.gif

  9. eventモデルのカラム定義もしてしまう。

    003_create_events.rbを編集して、カラム定義を追加します。
    instatntrails_027.gif

  10. こんどこそdb:migrate!

    再度、db:migrateにチャレンジです。
    instatntrails_028.gif
    おぉ、今度はうまくいきましたね。
    instatntrails_029.gif

  11. userをscaffold。

    “ruby script/generate scaffold user”で、userモデルの足場(scaffold)を作ります。
    instatntrails_030.gif
    ところが、引数にコントローラ名を指定しないと、デフォルトだとコントローラが複数形(users)になってしまう。
    気色悪いので(?)、コントローラ名も渡すことにする。

  12. 一旦、script/destroyでチャラにする。

    “ruby script/destroy scaffold user”で、scaffoldを消します。
    instatntrails_031.gif

  13. scaffoldし直し。(Controllerを明示的に渡して。)

    “ruby script/generate scaffold user user”で、userモデルの足場(scaffold)を作ります。
    instatntrails_032.gif
    eventも同様にscaffoldつくります。

  14. user、eventに何件か登録してみる。

    ここで、WEBサーバ(Mongrel)を起動します。
    instatntrails_033.gif
    ブラウザからscaffoldで作った画面へアクセスし、user、eventにデータを何件か登録してみます。
    instatntrails_034.gifinstatntrails_035.gif

  15. scheduleコントローラ生成。(indexイベント?も)

    “ruby script/generate controller schedule index”で、コントローラとindexページを生成します。
    instatntrails_036.gif

  16. scheduleコントローラに、eventモデルからのselect処理を記述。

    schedule_controller.rbを開いて、indexメソッドに以下のコードを記述します。(by 藤岡さん)


    def index
    @events = Event.find(:all)
    end

  17. ビュー”index.rhtml”に、eventリストの一覧表示を記述。

    index.rhtmlを開いて、以下のコードを記述します。(by 藤岡さん)
    →この辺のロジックがサラっと出てくるあたりが、Rails慣れしてる皆さんのすごいところです。はい。

    <% @events.each do | event | %>

    <%= link_to event.name, :action=>:event, :id=>event %>

    <% end %>

  18. scheduleにアクセスしてみる。

    ためしにschedule/index.rhtmlを表示してみます。
    instatntrails_037.gif
    おぉぉ!!出ましたね。

と、今回はここまでで終了。

個人的には、#15以降の”schaffold”から先の進め方の手がかりがつかめたのが収穫でした。一人でやってると、こんなところでさえも詰まっちゃうんですよね。

今回参加できなかった皆さんも、上記のとおりやっておけば、次回から合流可能です。

ふるってご参加ください。

2 thoughts on “[Rails]実践-日程調整アプリ(1)

  1. すっごく正確に再現してますね!すごい!
    雑誌の記事などはなんの問題もなくすんなり作れる過程を追っていますが、実際作るとひっかかるところも多いですよね。でもそこでリカバリの方法とか、新しいことが覚えられる、それもまた楽し、ですね。

  2. > monyakataさん
    コメントありがとうございます。

    > すっごく正確に再現してますね!すごい!

    monyakataさんのイラストに触発されました。
    こりゃ完全再現せにゃいかんだろ、とw。
    続きが楽しみですね。

コメントを残す

メールアドレスが公開されることはありません。