Ruby on Rails 3
Ruby on Rails 3 の情報
Rails 3が、いよいよ正式版になったので、それについての情報を書いていこうかと思います。
- ホームページ
- 2.3系からの主な変更点
- Ruby 1.9に正式対応
- 今までscript/generateやscript/serverなどのコマンド類がrailsコマンドから呼び出す方式に変更
- ずいぶんとrakeタスクが削られたというか、結構裏でタスクは生きてるようで、-Tで一覧に出なくなっただけ?
- 新しいActive Record query engine
users = User.where(:name => "david").limit(20) users = users.where("age > 29") # SELECT * FROM users # WHERE name = "david" AND age > 29 # ORDER BY name # LIMIT 20 users.order(:name).each { |user| puts user.name }
という感じで、今までのHashを渡す形式から、検索の条件やらなにやらをnamed_scopeのように書く方式になった。
- 新しいroutes
resources :people do resource :avatar collection do get :winners, :losers end end # /sd34fgh/rooms scope ':token', :token => /\w{5,5}/ do resources :rooms end # /descriptions # /pl/descriptions # /en/descriptions scope '(:locale)', :locale => /en|pl/ do resources :descriptions root :to => 'projects#index' end
2.3系と比べるとmap.がなくなり、すっきり書ける。
- 新しいAction Mailer
- 使用するライブラリ類をBundlerで管理
- クロスサイトスクリプティング対応
今までは<%= user.name %>なんてやるところには常に<%= hを付けなければいけなかったが、Rails 3では、逆に生データを出す場合に<%= raw user.name %>となる。 - Active Model
今まで、ActiveRecordではないデータをformで送信する場合、ActiveRecordのようなバリデーションが使えず、エラーチェックを組み込むのが一苦労だったが、ActiveModelで、その問題が解決されそうだ。 - 速度向上
今回のバージョンアップは、Merbとの統合という大きな改革の上で完成した物で、RailsというよりはMerbの進化形をRails 3にしたような内容となっている。Merbは軽量、速度重視で作られているため、今回のRails 3は大幅にパフォーマンスが向上しているらしい。 - アプリの名前がクラス名になる
ので、内部でクラス作る時に考慮する必要有り - 以降調査中