最近在花時間寫 Rails 的 application template,其中一個目標就是要給 Rails3 用。

先裝個 rvm,然後用 rvm 自編一套 ruby 來專們給 Rails3 環境用

rvm install ruby-1.8.7
rvm use ruby-1.8.7

為什麼要這樣呢?因為我想控制災情... 玩完後不再用的話,把這個新裝的 ruby 移掉就好 (rvm remove ruby-1.8.7)。

裝 Rails3 相關的 gem

gem install bundler --pre
gem install rails --pre

這樣就裝好了,可以執行 "rails -v" 看一下:

> rails -v      
Rails 3.0.0.beta4

接下來是產生新專案 (假設叫做 Momo 吧):

rails new Momo -m ~/rails-generator/template.rb

這個 rails-generator 就是最近在寫的東西了,需要以 git clone 抓下來使用。

有些慣用的 Plugin 都要需要用「pre」版才能配合 Rails3。目前確定以下幾個 plugin / gem 的版本:

gem 'will_paginate',      ">=3.0.pre"
gem 'rspec', ">= 2.0.0.beta.9.1"
gem 'authlogic', :git => 'git://github.com/odorcicd/authlogic.git', :branch => 'rails3'

authlogic 的部份... 這不是官方的 repository。官方的 2.1.5 版主要用了兩個在 Rails3 被丟棄的 API,因而在 github 上有一打的 fork 都只是在修正這個部份。另一方面,Railscast 介紹過的 Devise 則已經有 Rails3 的對應版本了。

目前確定的是... 如果想用 Datamapper,那麼在整合 authlogic 的時侯一定會碰壁,因為 authlogic 的源碼中寫死了使用 ActiveRecord。一段時間之前有人組出了這個 mokey patch ↗來,把 User Class 補上一大堆本來只在 ActiveRecord 中有的 method,於是可以接上 authlogic, 但隨著 Datamapper 1.0 釋出,那段 patch 有些部份已經無用了,需要再重新檢視。