maeshimaの日記

メモ書きです

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 とすると、クエリがユーザ数分発行されてしまうけど、上記のコードなら一回ですむ!

今週のrailscasts - maeshimaの日記

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

Arrayを分割する系のメソッド

railsで拡張されたメソッド。

Array#in_groups(n)

n個の配列を持つ配列を返す。

Array#in_groups_of(n, fill_with = nil)

n個の要素を持つ配列を持つ配列を返す。each_slice と似てるけど、配列(の配列)を返すメソッドであるというのと、fill_with に何か値を入れると、n個で割り切れない要素数の時、fill_with で指定した値を入れて全部n個の配列になるようにする部分が異なる。

ctagsのオプション

Rで再帰、eでemacs用の出力にしてくれる

ctags -Re app

閲覧専用のgitクライアントはtigで十分

Rails の git log を RSS か何かで継続的に読みたいと思ってgitクライアントぐぐったけど、別に tig で必要十分っぽい。調べたらdiffから変更ファイル全体も見に行けるし。