rails2.1の新機能
Rails-2.1リリース - Hello, world! - s21gこちら見てたらrails2.1が出たとのこと。
以下の5つ新機能があるみたいです。
タイムゾーン
Railsでタイムゾーンを指定出来るらしい。
以下、サイトから取得して来たサンプル
class ApplicationController < ActionController::Base before_filter :set_timezone def set_timezone # current_user.time_zone #=> 'London' Time.zone = current_user.time_zone end end
各ユーザー毎のタイムゾーンを設定する。
結構ニーズありそうだけど自分ところじゃ使わないなあ。
Dirty traking
データが変更あったかどうか、changed?メソッドが付くらしい。
更に、そのカラムが変更されたかどうかもメソッド付くみたい。
@user = User.find(:first) @user.changed? #=> false @user.name_changed? #=> false #書き換えする @user.name = "test name" @user.changed? #=> true @user.name_changed? #=> true @user.changed #=> ['title'] #保存する @user.save @user.changed? #=> false @user.name_changed? #=> false
ちょっと使うかも。
ジェムの依存関係
プロジェクトに利用するgemのリストを記述して、
rake gems:install
にてインストールさせれるらしい。
これは便利。
プロジェクトによってライブラリ入れたりする必要が有る事は多いし、
各メンバーにセットアップの手順説明する為に資料纏めてたけど、
enviroment.rbに書くだけで良いなんて。
Named scope
これも面白げ
class User < ActiveRecord::Base named_scope :active, :conditions => {:active => true} end
で
User.active
で、active がtrueのユーザーだけを返す。
そして中でラムダを使うと
class User < ActiveRecord::Base named_scope :registered, lambda { |time_ago| { :conditions => ['created_at > ?', time_ago] } end User.registered 7.days.ago # same as User.find(:all, :conditions => ['created_at > ?', 7.days.ago])
サンプルを写しただけだけど、これは良いねえ。
使いがいがありそう。
UTCベースのmigration
これが一番嬉しい。
migrationの番号が連番ではなく、時間ベースになるようです。
script/generate migration one
create db/migrate/20080402122512_one.rb
複数人で作業してる時、それぞれ別のモデル作ってるのに競合してる事が多かったので助かりますね。
キャッシュ機能の改善
キャッシュ方法の指定が改善された様です。
削除しやすくなっているポイ。