Ruby-gettextにバグ?
Railsの日本語化にはRuby-gettextを使えという風の噂によりRuby-gettextを試してたのだけれど。バグというかなんというかへんな問題が発生。
routes.rbで
map.connect '', :controller => 'users', :action => 'index' map.connect ':controller/:action/:id'
と書いてあるときに、environment.rbでrequire 'gettext/rails'してWEBrickを起動すると、IEで/users/など正しくコントローラとアクションにマッピングされるURIにアクセスすると、「要求されたサイトが使用できないか、見つけることができません」とエラーダイアログが表示されて、IEの「取り消されたアクション」ページが表示された。正しくマッピングされない/hogehogeとかにアクセスするとRailsのRouting Error画面が表示された。
むむ、と思ってroutes.rbを
map.connect ':controller/:action/:id' map.connect '', :controller => 'users', :action => 'index'
に書き直してもだめ。WEBrickを再起動してもだめ。
そこで、environment.rbのrequire 'gettext/rails'をいったんコメントアウトしてWEBrickを再起動。すると/usersにアクセスすれば、UserController#indexが正しく表示された。
そこでまたenvironment.rbのコメントアウトしたrequire 'gettext/rails'をアンコメントしてWEBrickを再起動すると、/usersにアクセスしたときにはUserController#indexが正しく表示された。
きちんと検証してないけど
- 「require 'gettext/rails'した状態 & routes.rbにマズイ記述」で正しくマッピングされるURIにアクセス → IEあぼん状態に
- 「require 'gettext/rails'をコメントアウト & routes.rb正常」でIEあぼん状態から復帰
という感じ?かなり挙動が怪しいので、何か俺がまずいことをしている可能性も高い予感。
Firefoxでは、IEあぼんフラグに関わらず、いつでも正常にページが表示できるので、HTTPヘッダの処理をIEがまずっているというIEバグ説も。
しかし、routes.rbに
map.connect '', :controller => 'users', :action => 'index' map.connect ':controller/:action/:id'
の順番で書くのって間違ってるのかなー?