ここのところ開発版 Rails ではさほど大きな変更や機能追加が無かったので、かなり短くなっています。この記事で触れられていない小規模な変更などについては Rails commit logs の方を参照してください。ActionPack のリファクタリングやマルチスレッド化、ActiveModel などもありますが、まだまだ開発途中で、それほど具体的でないので省略します。

要望や批判がありましたら、いつもの様にコメント欄にお願いします。

script/server が Thin に対応

 script/server が Thin が使用可能かチェックし、可能であれば使用する様になりました。開発環境で Thin を使用している場合でも、運用環境で Thin を使用している場合でも便利な機能でしょう。Thin を使用する場合は、environment.rbconfig.gem ‘thin’ を追加する必要があります。

この機能のパッチは fluxin の人達が提供してくれました。

コミット内容は GitHub から閲覧できます。

String#humanize が語形変化 (”Inflection”) でカスタマイズ可能に

 中核拡張 (”Core Extension”)String#humanize が、テーブル項目の様なアンダーバー付き文字列を読みやすくするのに使われる様になりました。例えば以下の様になります。

"actor_salary".humanize
=> "Actor salary"
"anime_id".humanize
=> "Anime"

レガシーな項目名を設定していたり、出演者の報酬 (”Actor salary”) という項目に “act_sal_money” といった様な「非人間的」な名前を使っている場合は、“Act Sal Money” が返されてしまい、あまりうまく機能しません。

この語形変化は、単数形、複数形、例外、不可算などと同じように、語形変化法則を指定することでカスタマイズできます。

Inflector.inflections do |inflect|
  inflect.human /_cnt%/, '\1_count'
  inflect.human 'act_as_money', 'Actor salary'
end

正規表現を使って “click_cnt”“Click count” できる点は気に留めておきたいところです。

このパッチを提供してくれた ダン・マンジェス (”Dan Manges”)パスカル・エラート (”Pascal Ehlert”) に感謝。

コミット内容は GitHub から閲覧できます。

ハッシュを使って複数テーブルにまたがる条件を設定可能に

 ネイクさん (”Pratik Naik”) が、結合 (”JOIN”) されたテーブルにハッシュでそれぞれ条件を設定できる、小規模ながら便利な ActiveRecord の機能を提供してくれました。説明より以下の例を見た方がわかりやすいでしょう。

Anime.all(
  :joins => :character,
  :conditions => {
    :active => true,
    :characters => { :gender => 'female' }
  }
}

この ActiveRecord クエリーは、アクティブに設定され、キャラクターが女性 (”female”) のすべてのアニメを返します。

コミット内容は GitHub から閲覧できます。

あとがき

 今回は以上です。小規模な修正や変更でも、もっと紹介して欲しいものがあれば、是非教えてください。

きょうのはま

湿度にやられています。