RE:Rails初心者はどうやって他人のRailsコードを読めばいいか

オレもRailsを初めて3ヶ月(もうちょいあるかも)たったので、ある程度オレの経験を元にまとめてみる。参考になるといいなー。

1. まずはアプリケーションを実際に動作させる

% ruby script/server
とりあえずコード読む前にそのアプリケーションがどんなものを把握するのが重要。コード読んでもわかるだろうけど、実際にブラウザでいじくりまわした方がはやく理解できると思う。その時にコントローラー名とアクション名もみといた方がよさげ。

2. モデル図を書く

これはid:Hash本人も重要って書いてたけど、ほんとに重要。そんなにキレイな図とかじゃなくていいから、紙とかに多対多なのか1対多なのかとか、参照名はなにかとかぐらいメモがてら書いておくと吉。モデルの関連さえ把握できれば、そのRailsアプリの半分以上理解できたも同然ってぐらい重要。

3. Logをみる

% tail -f log/development.log
開発時にも言えることだけどなるべくLogはみた方がいい。log/の下にdevelopment.log(多分ないと思うけど、productionで動作させてるならproduction.log)があるのでtailコマンドとかでみるといい。フォームのsubmit時のパラメータが見れたり、あとはlogger.infoで出力をチェックしたりとかできる。

4. script/consoleを使う

% ruby ./script/console
基本的な使い勝手はirbと同じ。irbと違うのはRails環境があらかじめロードされていること。例えば、モデルのメソッド名を呼び出したりとか。メソッドレベルで動作をみたい場合に便利。あと、2.0以降からモデル名を入力するとカラムの一覧も表示される。

>> User
=> User(id: integer,  created_at: datetime, updated_at: datetime)
>> User.find(:all)
=> []
>> user = User.new
=> #

test(or spec)があれば見る 追記08/06/04

できれば「test(or spec)があれば、見ろ」も入れて欲しい。 あれは「どういう挙動をして欲しいか」=「どう使うか」が書いてあるんだから、 どんな構造のアプリなんだか理解する助けになるよ。 てか、ならないなら書く意味ないもの。
コメント欄での指摘。このエントリを書こうと決めたときは書くつもりだったのに、実際に書いたら忘れてたっていう。

thx、faultier。

まとめとオマケ

なんかTips的なエントリになったけど、とりあえずざっと思いついたのはこんな感じ。あとはコントローラのアクションからスタートして、モデルのメソッドや一連の流れを追えばいいんじゃないかな。コントローラーのアクションも上から順に読むよりは、機能ごとの流れで追った方がいいと思う。例えば、new->create->showとかedit->update->showとか。実際はもうちょい複雑な場合もあるだろうけど。実際の流れがどんな風になってるかは実際にアプリを動かしながらURLを確認したり、ログの出力やビューのフォームのアクションを見れば大体わかるはず。

あとはオマケ的な指摘だけど、Railsが2系であればビューファイルの拡張子は「.rhtml」より「.html.erb」の方がいい。この辺はActionPackのマルチビューに関係してる。この辺は初心者のうちはとりあえず「.html.erb」にしとくぐらいでいいと思うし、なによりオレがマルチビューについてまだちゃんと理解してないので詳細ははぶく。サーセン。

respond_toは1つのアクションで複数のフォーマットを出力するときに使う。

respond_to do |format|
  format.html
  format.xml { render :xml => @user }
end
上記のように書くと、ブラウザからの通常アクセス時はhtmlを、WebサービスなどでXMLを指定された場合はXMLを出力する。Webアプリは、例えばブラウザからのアクセスとAPIでのアクセスで、処理は同じだけど出力が違うなんてことがあったりする。そういうときにrespond_toで指定してやることで無闇にアクションを増やさなくてすむ。

Railsレシピブック 183の技
Railsレシピブック 183の技高橋 征義

ソフトバンククリエイティブ 2008-05-31
売り上げランキング : 1080


Amazonで詳しく見る
by G-Tools
RailsによるアジャイルWebアプリケーション開発 第2版
RailsによるアジャイルWebアプリケーション開発 第2版前田 修吾

オーム社 2007-10-26
売り上げランキング : 8708

おすすめ平均 star
star充実した内容でわかりやすい
starrailsが良いのかrubyが良いのか本が良いのか
star1日に少しの時間で成果が分かる1冊

Amazonで詳しく見る
by G-Tools