capistrano_colors
gem install capistrano_colors
だけで色が付くようになるのかなと思ってたけど違った(当たり前)。全部のプロジェクトの cap コマンドを色つけしたいので ~/.caprc を作って
require 'capistrano_colors'
としたら色が付きました
複数ユーザ毎のコメント数を調べるコード
復習用エントリ。これは絶対に覚えなくてはならないコード!
user = User.all(:joins => :comments, :select => "users.*, count(comments.id) as comments_count", :group => "users.id")
各ユーザ毎に user.comments とすると、クエリがユーザ数分発行されてしまうけど、上記のコードなら一回ですむ!
Hash#fetch
キーに対応する値を返す。値がない場合はKeyError。デフォルト値をブロック中に指定できる。
hash = {} hash.fetch(:hoge) {'fuga'} #=> "fuga" hash.fetch(:hoge) #=> KeyError: key not found: :hoge
名前付き引数を使うようなときに使う。
ActiveRecord::RecordInvalid と ActiveRecord::RecordNotSaved
- ActiveRecord::RecordInvalid を手動で raise するには引数として model オブジェクトが必要。
- 下記のように、validationに失敗したオブジェクトを取得できる
begin complex_operation_that_calls_save!_internally rescue ActiveRecord::RecordInvalid => invalid puts invalid.record.errors end
- ActiveRecord::RecordNotSaved は ActiveRecord::RecordInvalid との違いがいまいち分からない。
- ActiveRecord::RecordNotSaved の方は model オブジェクトが必要ない
- A Programmer's Journal: ActiveRecord::RecordInvalid vs ActiveRecord::RecordNotSaved によると、before_ 系のコールバックでfalseを返したときは RecordNotSaved になるみたい。なので、コールバック使う場合は RecordInvalid と RecordNotSaved の両方を rescue で指定してやる必要がある
ctagsのオプション
Rで再帰、eでemacs用の出力にしてくれる
ctags -Re app