コントローラーを探すパスを変更する

Widgetの実装が、RailsのComponentなわけですが、このComponent機能はRails 2.0でなくなる、という話で、対策中。
ぶっちゃけた話、Componentで実装した理由は、単純にファイルをアーカイブする単位として適切だった、というだけです。

で、Widgetレンダリングは、render_component を多少書き換えてやっているんですが、iGoogleのように最初にJSだけ書き出しておいて、WidgetのコンテンツはXmlHttpRequestで後からとりにいく、という手段にするならば、render_componentを使わずに、CgiRequestに対して、最初から RAILS_ROOT/components/:component/:controller をActionControllerとみなしてレスポンスすればいいわけです。

で、

ActionController::Routing::Routes.draw do |map|
   map.connect ':controller/:action/:id'
end

で、URLにあわせててコントローラーが決まり、app/controllers からコントローラーがロードされ、処理が続きますが、この app/controllers のパスを変えたい場合はどうするか、という話になって、

ActionController::Routing::Routes.draw do |map|
   map.connect 'components/:controller/:action/:id', :requirements =>> {:controller => /[[a-z_]+\/[a-z_]+/i }}
end

とかやったらできたってことで。url_for がどうなるかはあとでやる。