Rails2.3アプリをRails3.2にアップグレードする、その2
RSpec
今回のプロジェクトでは、 全model、全lib (少しですが)、view のごく一部にたいしての RSpecが書かれています。
Rspecのバージョンは 1.3.2 から 2.8.0 へのアップグレードでした。
model
- バリデーションのテストで、その入力フィールドでエラーが出ているのかを
c.errors.on(:name).should_not be_nil
↓ のように変更
c.should have(1).errors_on(:name)
- libと同じく UTC の問題、日時をチェックしてる部分は多数あるので変更量は多かったですが、エディターがやってくれました。
view
view/controller周りは RSpec 2.0 で仕様変更があり、RSpecコードの変更が必要です。
- テスト対処のviewが partialの場合は
describe "_order_list.html.erb" do ... render "order/_order_list"
↓ のように変更
describe "order/_order_list.html.erb" do ... render
- assigns がなくなった?
assigns[:order] = orders(:or01)
↓ のように変更
assign(:order, orders(:or01))
- response.should have_tag が動かなくなった
response.should have_tag('#unit_price2', /¥30,000/)
↓ のように変更
rendered.should have_tag('#unit_price2', /¥30,000/)
性能測定
だいたい動くようになったので、開発サーバーにデプロイし 2.3版と 3.2.2版の性能を測ってみました。環境をそろえるために、両方とも Passenger 3.0.11 で動かしました。
サーバーは さくら VPS 512 でメモリーは512Mbyte です。
メモリー使用量
ab コマンドでページをアクセスし、top でrubyプロセスを測定しました。
環境 | VIRT | |
---|---|---|
Ruby1.8.7 + Rails2.3.10 | 140m | |
Ruby1.9.3 + Rails3.2.2 | 185m |