Sooey

2010-11-18 15:15:10 +0900

RSpecで書いているスペック(テスト)がどうも冗長になっている気がして、いいテストのリファクタリング指針はないかなと探してみたところ、RSpecのベストプラクティスをまとめているページを2つほど見つけたのでまとめておく。

  • (My) RSpec best practices and tips | EggsOnBread

    • specify {}it {}subject {}といったショートカット記法を使う
    • contextを'when'や'with'で始めて、メソッドの説明には'#'を使う
      • エラーメッセージがわかりやすくなる
    • メッセージをわかりやすいものにするためにRSpecマッチャーを使う
    • 1つのitブロックには1つのExpectationだけを記述する
    • describecontextをふんだんに使う
    • 妥当な値、境界値、不正な値をテストする
  • My top 7 RSpec best practices | Dmytro Shteflyuk's Home

    • before :allブロックは注意して使う
      • テストデータをbefore :allブロックで生成する際は、それらがトランザクションでラップされず、テスト後もデータのロールバックが行われないことに注意
      • after :allブロックでデータの削除を明示的に行う必要がある
      • before :eachに書き換えれば実行毎にロールバックが行われるようになる
    • For each test create exactly what it needs
      • プロジェクトが大きくなるとフィクスチャにフィールドを追加するたびにテストの大半が失敗するようになるのでfactory_girlなどのライブラリを使う
    • 個々のスペックで数百レコードものデータを生成したりしない
    • モックを造り過ぎない
    • contextを使う
    • Create several test suites to speed up your workflow
    • spec_helperが何度もロードされないようにする(重複してロードされた際は警告を表示するようにする)

でも、テストコードのリファクタリングという観点でもっとも参考になったのはid:t-wadaさんの「RSpec の入門とその一歩先へ」シリーズ。

この内容ならEPUBやPDFで販売されてても買っちゃうなあ。

2010-11-17 08:43:02 +0900

ドメイン失効を防ぐためのドメイン一括管理サービスという、あまり見かけないけどニーズはありそうなRoboDomainというサービスを発見。

RoboDomain | Flickr - Photo Sharing!

ドメイン名を登録するとExpiration DateやWHOIS情報などが一覧できるようになり、更新タイミングについてはメール通知やRSS配信でキャッチするほかに、iCalやGoogleカレンダーにインポートすることもできる。ドメインのrenewやtransferを行った際の記録を残しておけば、コストを視覚化してくれたりもするみたい。まだベータ期間中なので料金は無料です。フッターの「Handcrafted in Rome, Italy.」が素敵ですね。

ドメインに限りませんが、最近は社外のいろいろなリソース・サービスを組み合わせて使うスタイルが増えているので、地域やプロバイダーといったものをまたがってリソースを集約・一覧するサービスのニーズは高まっていると思います。例えば、ソーシャルプラットフォームのアグリゲーションだとConversocialFlowtownとかですね。理想を言えばアグリゲーションサービス側で個々のリソースの管理・操作までできると素晴らしいのですが、そこまでいかずとも、閲覧だけでも結構便利になるだろうものは多いはず(国内サービスを対象にしたアグリゲーションだと公開APIが絶望的なのがネックですが)。

2010-11-16 16:37:59 +0900

Redisのサーバ側コードを読んでみるよ、という試み。

武器はTAGSファイルと$EDITOR、それにGDBだけというのがいい。とりあえず起動時の処理とリクエスト&レスポンスの流れまでが解説済みで、次はSETGETコマンドを追ってみるようです。

こちらも、Redisの歴史から特長、使い方なんかをチュートリアル風にまとめたサイト。

フォントやらデザインやらがなかなかポップでよい。