clayfish2008-09-06

今日は自社の rails 1.1.2 なアプリを rails 1.1.6 までアップデートする作業を行ってみた.
そんなに昔のバージョンじゃない気がするがやっぱり2006年とかで古い.

難しかったのは gem 関連.

  • 当時の rails は gem 0.9 系列? を前提としている
  • 今インストールしている gem は 1.2 である

非互換なポイントに対する対処としては以下のような感じ.

  • gem pristine –all することにより gem の obsolete なメソッドが使えるようになる(らしい)のだけれども, このコマンド実行以降 sqlite3-ruby でエラーになる.(sqlite3-ruby のバージョンは 1.2.2 だった)
    • 結局 gem update sqlite3-ruby して 1.2.4 をインストールして元通りになった. こわー.
  • config/boot.rb に対して手で修正して乗り切るポイントとして
    • require_gem が使えないので gem にする
    • rake rails:freeze:gems VERSION=1.1.4 とかやると, uninitialized constant Gem::GemRunner とかいわれてなんとかしないといけないので, やっつけで config/boot.rb に以下追加.
require "rubygems"
require "rubygems/gem_runner"

rails 1.1 系列→ rails 1.2 系列へのアップデートはさらに大変になる予感.

rails な既存アプリのアップデートの仕方は以下の本にくわしく書いてあります.

Railsレシピブック 183の技

Railsレシピブック 183の技