Redmine を 0.8.4 から 0.9.1 へバージョンアップ

いつもの手順。
/home/hokorobi/redmine に 0.8.4 がある。
RubyForge から redmine-0.9.1.tar.gz をダウンロード。
/home/hokorobi/redmine-0.9.1 へ展開。

$ cd /home/hokorobi
$ tar zxf redmine-0.9.1.tar.gz
$ sudo mv /home/hokorobi/redmine /home/hokorobi/redmine-0.8.4
$ mv /home/hokorobi/redmine-0.9.1 /home/hokorobi/redmine
$ cp /home/hokorobi/redmine-0.8.4/config/database.yml /home/hokorobi/redmine/config
$ cp /home/hokorobi/redmine-0.8.4/db/redmine.db /home/hokorobi/redmine/db
$ cd /home/hokorobi/redmine
$ rake db:migrate RAILS_ENV="production"
rake aborted!
Could not find RubyGem rack (~> 1.0.1)

rack が必要らしいのでインストール。
バージョンを指定しないと 1.1.0 になってしまう。1.0.1 にしないと。

$ sudo gem install rack
$ sudo gem uninstall rack
$ sudo gem install --version '= 1.0.1' rack

もう一度

$ rake db:migrate RAILS_ENV="production"
rake aborted!
A key is required to write a cookie containing the session data. Use config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase" } in config/environment.rb

インストール手順を確認してみると、こいつの実行が必要らしい。
バージョンアップのところにはないよね?

$ rake config/initializers/session_store.rb
$ rake db:migrate RAILS_ENV="production"

引き続き

$ rake tmp:cache:clear
$ rake tmp:sessions:clear

いつも通り http://192.168.0.5/redmine/ でアクセスできるようにする。
config/routes.rb の二行目に以下を追加。

  ActionController::AbstractRequest.relative_url_root = "/redmine"

引き続き

$ cp public/dispatch.fcgi.example public/dispatch.fcgi
$ chmod +x public/dispatch.fcgi
$ sudo chown -R www-data ./

PDF 出力文字化け解消は必要ないのかな?
config/locales/ja.yml の general_pdf_encoding: は CP932 になっていた。
lighttpd を再起動。

$ sudo /etc/init.d/lighttp restart

ブラウザでアクセスしてみると 500 Internal Server Error
config/routes.rb を元に戻して lighttpd 再起動。
ブラウザでアクセスしてみると 404 not found。そりゃそうだ。
でも Internal Server Error にならないから、この設定が原因かな。
relative_url_root を検索してみると Rails 2.2.2 では、ActionController::AbstractRequest.relative_url_root が ActionController::Base.relative_url_root に変わった(?)らしい。
config/routes.rb の二行目に以下を追加。

  ActionController::Base.relative_url_root = "/redmine"

lighttpd を再起動して、ブラウザからアクセス成功。
メジャーバージョンアップはさすがに手こずるな。

関係のなかった試行錯誤

rake をアップデートしたが元に戻す

rake をアップデートして 0.8.7 をインストールしてみる

$ gem update rake

sudo を付け忘れて ~/.gem にインストールされてしまう。
sudo gem uninstall rake では削除できなくなくなってしまったので手動で削除。
最後 0.8.7 にするも、結局 0.8.3 に戻した。

$ sudo gem update rake
$ sudo gem uninstall --version '= 0.8.7' 
config/environment.rb に config.action_controller.session_store の定義をコピー

config/environment.rb に config.action_controller.session_store の定義を 0.8.4 からコピー。
config.action_controller.session_store = :PStore を追加。

$ rake db:migrate RAILS_ENV="production"
rake aborted!
uninitialized constant ActionController::Session::PStore

駄目みたいなので元に戻す。