Redmine の不具合 -- 「活動」や「リポジトリ」でエラー

環境

まずは、下記が後述する不具合が起きた環境

$ 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 で起動したときの表示
「活動」で不具合 (passenger)

passenger だとエラーログが見れなくて困ったので、WEBrick の起動に戻してみると、エラーの内容が表示されました。

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