Sooey

2013-01-28 03:24:54 +0900

Signals vs. Noiseの去年のエントリに、テストをどれくらい書くべきかということについてDHHが指針を示していたものがあったので読み返してみました。

予想通り、DHHはなんでもかんでもテストを書くということに対してはだいぶ批判的なスタンス。

曰く、テストを書くということの裏側には、テストを書く時間、テストをアップデートする時間、テストコードを読んで理解する時間といったコストが発生しているので、テストを書くことによって得られるメリット(回避できる問題)とのバランスをよく考える必要がある、と。

議論を呼ぶことは承知のうえでDHHが提案する「Railsアプリのテストにおいて、やってはいけない7つのこと」は以下の通り。

  1. 100%のカバレッジは目指さない
  2. コードとテストの比率は1:2だとコード・スメルがしてくる。1:3だと酷い匂い(stink)(訳注:要は、テストコードがテスト対象コードの倍を超えないくらいにしましょう、ということだと思う)
  3. 作業時間の1/3以上がテストに関する作業にかかっているとしたら、何かやり方を間違えている。半分以上をテストに割いているとしたら完全に間違っている
  4. ActiveRecordに標準で用意されているアソシエーション、バリデーション、スコープについてはテストしない
  5. 異なる要素を結合することから起きる問題について結合テストを使う(単体テストで間に合うものには用いない)
  6. プログラマ以外の人がテストを書いてくれるような魔法の国に住んでいるのでもないかぎりCucumberを使わないこと(そこに住んでいるのなら、妖精の粉の入ったボトルを僕に送ってくれ!)
  7. すべてのコントローラー、モデル、ビューについてテストファーストでやろうとしないこと(DHHの場合はだいたい20%がテストファースト、80%がテストアフター)

コメントも100個以上ついていて追うのが大変ですが、DHHがリプライしているあたりだけを読んでみるのも面白いと思います。Cucumber嫌いなんだな〜、と改めて感じた。

2013-01-26 01:16:45 +0900

Dribbbleの規模。

Dribbbleから届いたメールマガジンに2012 STATSとして、こんな数字が載っていた。

  • 166,441 new members joined Dribbble, bringing our total population to more than a quarter of a million members.
  • 14,488 designers posted work for the first time on Dribbble.
  • 318,347 shots and 47,263,176,953 pixels were dribbbled.
  • 1,049,007 comments were posted by 26,574 members.
  • 8,382,828 likes were recorded from 90,758 members.
  • 458,564,807 page views.
  • And we currently have 2,978 Dribbblers who are members of 405 meetups across 377 cities around the world.

  • 新しくサインアップしたメンバーは166,441人(トータルは25万人を超えた)

  • 初めて画像を投稿したデザイナーは14,488人

  • 全体の画像投稿数は318,347件、47,263,176,953ピクセル

  • 26,574人が1,049,007件のコメントを投稿

  • 90,758人が8,382,828件のLike

  • 458,564,807ページビュー

  • 377都市で405回のミートアップに2,978人が参加

2013-01-23 01:15:02 +0900

PowでNewRelicのdeveloper modeを動かす方法。

最近ローカルの環境をPow: Zero-configuration Rack server for Mac OS Xに切り替えたら、Railsアプリの/newrelicにアクセスしてもNew Relicのdeveloper mode(development環境でもそれっぽいパフォーマンス統計情報を表示してくれる)が表示されなくなってしまいました。

検索してみたところ、Powで使う場合は環境変数を設定する必要があるみたい。

というわけで、~/.powconfigに以下のように追加して、

# Use NewRelic RPM developer mode with Pow
# see: http://andre.arko.net/2011/11/12/use-newrelic-rpm-developer-mode-with-pow/
export NEWRELIC_DISPATCHER=pow
export POW_WORKERS=1

killall powすればOK。

私の環境ではPowの制御にpowderを使っているので、

$ powder down
$ powder up

で上手く動くようになりました。

NewRelic developer mode

2013-01-19 15:26:14 +0900

Railsのセッションシークレットトークンをより安全に扱うようにしましょう、という話。

Railsアプリケーションの脆弱性をチェックしてくれるツール brakemanがアップデートして、年末年始にかけてアナウンスされたいくつかのRailsの脆弱性に対応しました。

アップデートしてスキャンしたところ、config.secret_tokenの値がバージョン管理の対象になっているということでHighな警告がされました。

Phusionのブログエントリで5通りほどの対応策とおすすめ度が紹介されていて、5つ目の「環境変数の値があればそれを、なければデフォルト値を」というやつが、おすすめ度は低いけどHerokuで動かすアプリについては都合がよさそうなので採用することにしました。

config/initializers/secret_token.rb

Foo::Application.config.secret_token = ENV['SECRET_TOKEN'] || 'fallback_token_for_development'

のようにして、コマンドラインからHerokuの変数を設定。

$ heroku config:set SECRET_TOKEN=`bundle exec rake secret`