2009年1月31日土曜日

Ruby on Rails 2.0.1 から 2.0.4 の主な変更点をまとめました



今まで Ruby on Rails 1.2 系を中心にプロジェクトでも進めてきましたが、そろそろ 2.0 系に移行しないといけないと思っているので、変更点についてまとめました。

2.0.1~2.0.4 までをまとめます。

2.0.1
  • ruby-debugが利用可能になった
【利用方法】
1. ruby-debugインストール
# gem install ruby-debug
(ruby-debug-baseもインストールされます)

2. requireする
require 'ruby-debug'

3. デバッグするところでdebuggerを追加する
def hoge
 debugger
end

4. サーバを再起動して、デバッグコマンドを入力する

list
デバッグしているところのソースを表示

p
p 変数名とすると、変数名の値を表示する

break
ブレークポイントを設定している一覧を表示する
(引数に行番号を指定すると新たにブレークポイントを設定できる)

del
引数に行番号を指定するとブレークポイントを削除する

cont
次のブレークポイントを実行する

h, help
コマンドで利用可能な一覧を表示する

  • activewebserviceからactiveresourceに変更された
2.0 からはさらにRESTを意識したフレームワークになった。
  • ルーティングの名前空間(調べる)
  • テンプレートフォーマットの変更
ERBで利用するフォーマットが以下のように変更されました。
  「index.rhtml」から「index.html.erb」
  「index.rxml」から「index.atom.builder」
  「index.xml」から「index.xml.erb」
  「index.rjs」から「index.rs.rjs」
  • BASIC認証モジュールが追加
通常のBASIC認証では .htaccess で設定しますが、Railsアプリケーション内で可能になりました。
class HogeController < only =""> :fuga

 def fuga
  render(:text => "BASIC認証のみ表示可能")
 end

 private
 def auth
  authenticate_or_request_with_http_basic do |user, pass|
   user == 'kenjiro' && pass == 'kenjiro'
  end
 end
end
  • JavaScript、CSSファイルをまとめて読み込み可能に
アプリケーションが大規模になると、JS、CSSファイルも増えてきますが、2.0 系からはアクセスを減らすために、読み込むファイルをまとめてできるようになりました。
テンプレートファイルでcacheを指定します。
  <%= javascript_include_tag(:all, :cache => true) %>

public/javascript ディレクトリ内に all.js というファイルが作成されて、all.js ファイルのみ読み込まれます。
CSSファイルも同様です。

ただデフォルトでは production のみ適用されているので、config/environment/development.rb ファイルの設定を変更する必要があります。

  config.action_controller.perform_caching = true
  • 静的ファイルの提供元を別サーバに向けるasset_host(調べる)
  • CSRF対策の変更
CSRF対策したいアクションを以下のように指定します。
  protect_from_forgery :secret => 'kenjiro', :only => :index
  • サニタイズ対策の変更
TextHelper#sanitizeのタグ指定の方法が、ブラックリストからホワイトリスト式に変更されました。

全体で設定する
Rails::Initializer.run do |config|
 config.action_view.sanitized_allowed_tags = 'tr', 'td'
 config.action_view.sanitized_allowed_attributes = 'id', 'class', 'style'
end

個別に設定する
 <%= sanitize @obj.body, :tags => %w(tr td), :attributes => %w(id class style) %>
  • 例外処理がコントローラ別に設定可能
rescue_from User::NotAuthorized, :with => :deny_acces

全体での指定は rescue_action_in_public があります。
プラグインをインストールして利用可能ですね。
  • セッション管理がcookieに変更
ハッシュ形式でcookieに保存されます。
  • リクエストプロファイラが追加(調べる)
HTML Render のベンチマークができるようになりました。
  • Feed 生成の簡素化
  • Query Cacheの追加
同じリクエストないからでは、キャッシュされた結果を返すように変更されました。
  • Migration の記述が変更
t.column :hoge, :integer => t.integer :hoge
  • to_json
JSON形式がシリアライズ可能になりました。
  • ActiveRecordを軽量化
actis_as 系の機能がプラグイン化されました。
移行する場合、ここで動作しない可能性が高です・・・
  • config/initializers
初期化する場合の設定ファイルを config/initializers に設置できるようになりました。


2.0.2
  • デフォルトのデータベースがsqlite3に変更
プロジェクト作成時にデータベースを指定すれば任意のデータベースを利用可能になります。
  • config.action_view.cache_template_loading = true が指定可能(調べる)


2.0.4
  • REXML の脆弱性に対応


次回は 2.1.0 から 2.2.2 までの変更点をまとめます。

0 件のコメント: