Ruby1.8.7+Rails2.1.1→Ruby1.9.1+Rails2.3.2(その1)

これまで作ってきたものを、Ruby1.8.7+Rails2.1.1の環境からRuby1.9.1+Rails2.3.2に移行してみたいと思います。

1. rake rails:update:configsで失敗

masayuki@ubuntu-vm:~/work/rails/shrimp$ rake rails:update:configs
(in /home/masayuki/work/rails/shrimp)
rake aborted!
undefined method `>=' for nil:NilClass
/home/masayuki/work/rails/shrimp/Rakefile:4:in `require'
(See full trace by running task with --trace)

config/boot.rbで、rubygemsのバージョンの取得がうまくできず、失敗しているようでした。
dummyのプロジェクトを作成し、そこからconfig/boot.rbをコピーしてrake rails:update:configsを実行。

2. gettextで失敗

masayuki@ubuntu-vm:~/work/rails/shrimp$ rake rails:update:configs
(in /home/masayuki/work/rails/shrimp)
rake aborted!
/usr/local/ruby-1.9.1-p129/lib/ruby/gems/1.9.1/gems/gettext-1.93.0/lib/gettext/iconv.rb:102: invalid multibyte char…
/usr/local/ruby-1.9.1-p129/lib/ruby/gems/1.9.1/gems/gettext-1.93.0/lib/gettext/iconv.rb:102: invalid multibyte char…
/usr/local/ruby-1.9.1-p129/lib/ruby/gems/1.9.1/gems/gettext-1.93.0/lib/gettext/iconv.rb:102: syntax error, …
  puts Iconv.iconv("EUC-JP", "UTF-8", "ほげ").join

gettextは事情があって--version '< 2.0.0'としてきたのですが、上記のエラーで動かないので、最新バージョン(2.0.4)をインストール。

3. gettext/railsgettext_rails

gettext_rails provides the localization for Ruby on Rails-2.3 or later using Ruby-GetText-Package. 

とのこと。

4. config.cache_template_extensions

undefined method `cache_template_extensions=' for ActionView::Base:Class

このメソッドはdeprecatedということで、コメントアウト

5. app/controllers/application.rb→app/controllers/application_controller.rb
Rails2.3から、application.rbというファイル名が変更になっている為。リリースノートを読むと、rake rails:updateとすれば良かったらしい…。

6. jrailsの更新
jrailsはRuby1.9対応にする必要があります。

7. incompatible character encodings: ASCII-8BIT and UTF-8

  • ASCII-8BIT外の文字を使っているソースの先頭に「#coding: utf-8」をつけた
  • patchをあててみた
  • <%= collection_select … %>で展開される文字がASCII-8BITの外だと「incompatible character encodings: ASCII-8BIT and UTF-8」 ← いまココ