札幌Ruby会議03の動画を見たのでメモ

当日は、LT途中から見たのですが、見れなかった動画も公開されてます。
素晴らしい!!

特に気になったとこをメモ

Rubyのテスト文化とツール 2010(@hsbtさん)

esmで使用されているテストツールについての説明でした。
各レイヤーでのツールの使い分けなどのお話がありました。


ここら辺の話って自分みたいに最近テスト駆動始めましたみたいな人は
絶対行き着くとこなので、とても参考になる。


■esm文化
・テストを書く
・テストを書くレイヤーを分割する
・動かないテストを放置しない
・バグを再現するテストをかいてから直す
・DRY(テストも)


■metric_fu
使ってんだ(先日試してみたところ


■mock/stubにはrr
いろいろ(rspec-mocks、rr、mocha、flexmock)ある中でrr。
rspec-mocksよりrrの方がキレイに書けそうなので試してみたいとは思っていました。


■mock/stubの使い分け
基本stubでIO層/外部APIを叩く部分などはmock。
(mock使いすぎ注意。)


■webmock
通信をstub化できる。
おおお、これ良さそう。


■fixture replacement には factory_girl or machinist (factory girlを使ってみようと思う)
machinistはmongodb対応可。最近fabricationっつーのもある。


■Capybara(end-to-end test、integration test、acceptance test)
Selenium Webdriverとの連携可。
capybara自体よく分かってないんだけど
cuke with capybaraってことなのかな。


■CI環境(Continuous Integration)
Hudson。commit毎に実行。


■テストの高速化とリズム
・spork(requireが遅いライブラリを読み込んでdrbで通信)
・Guard::Rspec / ZenTest


■DRY
テストもDRYに。
多段ネストやべた書きやめる(beforeの使いにもよるがRSpec遅くなる)。
Custom Matchersを使う。

「北のRails開発現場から'10(仮)」(@tmaedaさん)

ペアプロで感極まるというお話。(新人教育にも有効)

関係無いけどmacの障害対応

・シングルユーザモード起動
 コマンド+s
・書き込み可でディスクマウント
 mount -uw /
・コア削除
 rm -fr /cores/*

RSense

スライドにチラット映ってた。
後で試そうと思いながら、試してなかった。これを機に入れよう。

readline知らんかった

C-a:カーソル移動(頭)
C-e:カーソル移動(後)
C-u:行頭までyank
C-r:入力履歴の検索

Railsアプリ開発 野生のカン」(@nay3)

コードレビューのポイントについてのお話。
(Wiki、ノート、cucumber)
→視点を変えれば、開発のポイントですよね。とってもためになります。


ついついどっちだっけ、となるのでメモ。
「Filterは:only。attr_protected。」

コードレビュー

■設計資料
・ゴールが書かれているか
・ほかの話題を加えないか
・ややこしいとこは図を書いているか(Class / Objects / Modules / Mix-in / 状態遷移 / 状態の分類)


■URL設計
・URL設計がコードの外でされているか
・具体的なURLを書く
 /admin/users/:id
 じゃなく
 /admin/users/3
 具体的なURLを目で見て美しさを評価
・URL、メソッド、コントローラ、アクション、説明 をwikiに書く


■RESTfull I/F
名詞で調整する。


例:本を借りる
POST:/books/189/borrow
でなく
POST:/books/189/borrowing
借りること(borrowing)をユーザが作ると考える


■Filter
too less → not DRY
too much → complex


before_filter には前提条件を書く


■:only or :except
 onlyを使いましょう!!
(exceptは未来を含む)


■例外処理
アクション内の独自例外処理が必要なことは稀


■コントローラではトランザクションは不要なことが多い
callbacks or モデルの専用メソッド


■attr_protected or attr_accessible
 attr_protectedを使いましょう!!
 accessibleは事故の元
 未来に追加される属性も拒絶指定
 継承元やモジュールやプラグインで使われていたら大変


■save or save!
falseを見ない(if @obj.save しない)のであれば!つける。
こういうのは要注意。

def some_action
  @obj.save
end


■スライドに英語が入ってる
読める人が増える。

あとで試す

・rr
・webmock
・capybara(Selenium Webdriver!!)
・hudson
・pararel test
・spork
・Guard::Rspec
・RSense
ペアプロ(やりたい)
・URL設計を書く
・英語スライド

ざっくり感想

凄くいいお話だらけです。札幌Ruby会議凄い。
詳細書いてないけど、角谷さんや高橋さん松本さんのお話もとても面白かった。(早さはロマン。Dave Thomasの付箋。とかも。
もちろんカーリングも含めて。今年じゃないけど、「農ruby, 農life.」って語呂いいなぁ)
あと、当日の服が1年前と同じ人だらけなのも笑ってしまった。