Redmine の不具合 -- 「活動」や「リポジトリ」でエラー
環境
まずは、下記が後述する不具合が起きた環境
- Mac OS X 10.5 (Leopard)
- Ruby 1.8.7... ~/BIN/Ruby 以下に、自前でビルド
- SQLite3 3.4.0 ... OS に標準添付のもの
- Subversion 1.4.4 ... OS に標準添付のもの
- その他、gem, rake, rails, redmine は Redmine.JP | Redmineのインストール 参考にしながら最新版をインストール
- passenger 2.0.1 も上記の指示に従って入れた
$ ruby --version ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-darwin9.3.0] $ sqlite3 --version 3.4.0 $ svn --version svn, version 1.4.4 (r25188) $ gem --version 1.2.0 $ rake --version rake, version 0.8.1 $ rails --version Rails 2.1.0 $ cat lib/redmine/version.rb require 'rexml/document' module Redmine module VERSION #:nodoc: MAJOR = 0 MINOR = 7 TINY = 2 config $ passenger-config --version 2.0.1
症状
症状としては、プロジェクトを追加し、そのプロジェクトの「活動」や「リポジトリ」のリンクをクリックしたときにエラーが表示されました。
passenger だとエラーログが見れなくて困ったので、WEBrick の起動に戻してみると、エラーの内容が表示されました。
WEBrick で起動したときの表示
解決方法
どうやら、String#chars というのが問題を起こしている様子だったので、これをググってみると \ay diary - Rails 2.0.2とRuby 1.8.7のString#chars の記事にあたりました。
ぼくの環境では Rails 2.1.0 + Ruby 1.8.7 なので当てはまらないかと思っていたのですが、上記の記事を参考にしつつ、redmine/config に initializers ディレクトリを作成し、remove_string_chars.rb というファイルを作成、下記の内容を書き込んで WEBrick なり passenger (Apache) なりを再起動すれば OK でした。
config $ cd initializers/ initializers $ cat remove_string_chars.rb unless '1.9'.respond_to?(:force_encoding) String.class_eval do begin remove_method :chars rescue NameError # OK end end end