mephisto0.73から0.8.0への更新作業を行った時の記録.オフィシャルにはアップグレードガイドみたいなのはないので,ここのページとかを参考に行った.
0. mephistoの最新版を取ってくる
officialにあるmasterブランチは余り良くない.
(Pluginシステムとかが変わっていて,対応してないのが多い)
ので,rel-0.8から取ってくるのが良い.
今回は2008-07-01にcommitされたtechnoweenie-mephisto-45ffeb7a56d59b8abe0bd78b53cec861423c9654.tar.gzを利用.
1. backupを取る
$ tar cvzf mephisto_backup.tar.gz my_mephisto_dir/
sqliteを使ってない場合は,dbのバックアップも別途取ること.
2. patchをつくる
いままで動かしていた0.7.3のソースを使って,アップデートパッチを作る
$ wget http://s3.amazonaws.com/mephisto-blog/mephisto-0.7.3.tar.gz $ tar xvzf mephisto-0.7.3.tar.gz $ tar xvzf technoweenie-mephisto-45ffeb7a56d59b8abe0bd78b53cec861423c9654.tar.gz $ diff -Nurdp mephisto-0.7.3 technoweenie-mephisto-45ffeb7a56d59b8abe0bd78b53cec861423c9654 \ > ~/mephisto-update.patch
3. patchを当てる
$ cd my_mephisto_dir/ $ patch -p1 < ~/mephisto-update.patch &> ~/patch.log
4. patchを当て損なったポイントを確認
environment.rb等を中心に,当て損なっている所も多いので,その一覧を取得.
$ find ./* -name *.rej $ grep rej ~/patch.log
今回はapp/controllers/mephisto_controller.rb conf/environment.rb public/.htaccess public/install.htmlが引っかかった.
後ろ2つは問題ないので無視.mephisto_controller.rbは最新版で置き換え.environment.rbは置き換えた後に,もう一回設定をし直す.
5. gem packageのアップデート
railsを2.0.2にアップデートする.tzinfoもアップデートorインストールすること.
$ gem install rails -v=2.0.2 $ gem install tzinfo
0.7.3時代の遺産としてvendor/tzinfo-0.3.2/とかが残っている場合は消去しておくこと.そうしないとTZInfo周りのエラーが出てadmin画面を開けなくなります.
6. Databaseのアップデート
$ cd ~/myblog $ RAILS_ENV=production rake db:migrate
7. 動作確認
$ script/server -e production
これで無事動けばOK.実際には結構いろいろとトラブル(iconvでascii//translit//ignoreが変換できないとか)があったけど,環境依存な部分もあるのでそこら辺は別記事で.