前回から、フライトさんに場所をご提供いただいてます。(ありがとうございます。)
このビルは、若かりし頃に常駐していた思い出の地でもあります(当時、2Fに某社が入ってまして)。当時は1Fに ローソンとか入ってなかったなぁ・・・。
フロアに入ると、お仕事中の方々もいらっしゃる。休日出勤ご苦労様です。ん?その中に見覚えのある後姿が・・・おぉ、この間まで一緒に仕事してたUさんではないですか!懐かしくて、しばし雑談。がんばって!!
・
まずはランチを食べながら、自己紹介。皆さん工夫を凝らしたPPを持参。たのしいです。
その後、大久保さん、藤岡さんのセッション(またしてもガンダムねたw。しかもパワーアップしてます。ツボ突かれました。)が続きます。ご両名とも相変わらずレベル高いです。ただただ”スゲー”と唸るばかりです。(内容は割愛させていただきます。ごめんなさい。)
3つ目は、いよいよ実践!一からアプリを作ってみようということで、片平さん主導でみんなで設計、たまたまWindowsマシンを持参した(初心者代表の)私が打ち込んでいく、ということになりました。
尚、開発環境に関しては、こちらのエントリ「[Rails]はじめよう! InstantRailsで。」を参照ください。
・
お題目は、「日程調整アプリ」ということで、勉強会や飲み会(?)のスケジュール調整に使うWEBアプリを作っていきます。仕様の詳細は森さん作成の議事録および、大久保さんのER図を参照ください。
で、 ワタシの方は、せっかくなので、マチガイとそのリカバリ方法も含めて、実況風に書いてみたいと思います。
-
Railsのプロジェクトを作る。(アプリ名は”adjuster”)
InstantRailsのメイン画面から”Create New Rails App…”をクリックします。
すると、DOS窓が開きますので、”rails adjuster”と入力します。
↓生成されました。
-
phpMyAdminで”adjuster_development”のスキーマつくる。
InstatntRailsから、Configure->Databaseを選択します。
ブラウザが起動し、phpMyAdmin画面が開きますので、”新規データベースを作成する”欄に”adjuster_development”と入力して”作成”ボタンをクリックします。
↓できました。
-
モデル(user、schedule、event)を作る。
adjusterプロジェクトのディレクトリに移動して、”ruby script/generate model user”と入力します。
↓できました。
同様に、schedule、eventのモデルも作ります。 -
userモデルのカラム定義をする。
モデルをgenerateすると、db/migrateディレクトリ下に、*.rbファイルが生成されます。
001_create_users.rbを編集して、カラム定義(メソッド?)を追加します。
-
db:migrateしてみる。
じゃ、ここで”rake db:migrate”して、DBテーブルを生成してみます。
↓できました。
phpMyAdminで確認してみます・・・おぉ!できてます。
-
続けて、scheduleモデルのカラム定義をする。
-
またdb:migrateする。
“rake db:migrate”して、schedulesテーブルを生成したいと思います。
・・・あれ?何も出ない。なんで?
あ、そうか!さっきのdb:migrateで、空のschedulesとeventsが作られちゃったんだ・・・。まずったぁ。 -
db:migrate VERSION=で初期状態に戻す。
ということで、一旦DBを空にすることにしました。
“VERSION=”と書くと、”VERSION=0″と同じ意味なんだそうです。へぇ。
-
eventモデルのカラム定義もしてしまう。
-
こんどこそdb:migrate!
-
userをscaffold。
“ruby script/generate scaffold user”で、userモデルの足場(scaffold)を作ります。
ところが、引数にコントローラ名を指定しないと、デフォルトだとコントローラが複数形(users)になってしまう。
気色悪いので(?)、コントローラ名も渡すことにする。 -
一旦、script/destroyでチャラにする。
-
scaffoldし直し。(Controllerを明示的に渡して。)
“ruby script/generate scaffold user user”で、userモデルの足場(scaffold)を作ります。
eventも同様にscaffoldつくります。 -
user、eventに何件か登録してみる。
ここで、WEBサーバ(Mongrel)を起動します。
あ
ブラウザからscaffoldで作った画面へアクセスし、user、eventにデータを何件か登録してみます。
・ -
scheduleコントローラ生成。(indexイベント?も)
“ruby script/generate controller schedule index”で、コントローラとindexページを生成します。
-
scheduleコントローラに、eventモデルからのselect処理を記述。
schedule_controller.rbを開いて、indexメソッドに以下のコードを記述します。(by 藤岡さん)
def index
@events = Event.find(:all)
end
-
ビュー”index.rhtml”に、eventリストの一覧表示を記述。
index.rhtmlを開いて、以下のコードを記述します。(by 藤岡さん)
→この辺のロジックがサラっと出てくるあたりが、Rails慣れしてる皆さんのすごいところです。はい。
<% @events.each do | event | %><%= link_to event.name, :action=>:event, :id=>event %>
<% end %>
-
scheduleにアクセスしてみる。
と、今回はここまでで終了。
個人的には、#15以降の”schaffold”から先の進め方の手がかりがつかめたのが収穫でした。一人でやってると、こんなところでさえも詰まっちゃうんですよね。
今回参加できなかった皆さんも、上記のとおりやっておけば、次回から合流可能です。
ふるってご参加ください。
すっごく正確に再現してますね!すごい!
雑誌の記事などはなんの問題もなくすんなり作れる過程を追っていますが、実際作るとひっかかるところも多いですよね。でもそこでリカバリの方法とか、新しいことが覚えられる、それもまた楽し、ですね。
> monyakataさん
コメントありがとうございます。
> すっごく正確に再現してますね!すごい!
monyakataさんのイラストに触発されました。
こりゃ完全再現せにゃいかんだろ、とw。
続きが楽しみですね。