Ruby 1.8.7とRailsの愛称

Ruby 1.8.7からはString#charsが定義されるようになった為、Railsのように積極的に組み込みクラスを改変しているものを使用すると、"hogehoge".firstを実行すると

NoMethodError: undefined method `[]' for #

などとなる。

対策の一つとしては、config/environment.rbのRAILS_GEM_VERSIONの設定とbootのrequireの間に入れて回避。

if RAILS_GEM_VERSION == '1.2.6' && RUBY_VERSION >= '1.8.7'
  class String
    remove_method :chars
  end
end

http://znz.s1.xrea.com/t/?date=20080606#p01