Rails3ではrelative_url_rootが無くなっていた

とりあえず、Rails3.0.3ではまったので備忘録。

thinを使って、以下のようにディレクティブを使って一つのドメインで複数のRailsアプリを動かそうとすると、画像等の静的ファイルがみえなくなってしまった。

http://exsample.com/app1
http://exsample.com/app2

原因は、Rails3になって ActionController::Base.relative_url_root が無くなってしまったため。そのため上記のようなことをやろうとする場合、config/environments/XXX.rb 内で config.action_controller.asset_path or config.action_controller.asset_url を設定する必要があるみたい。

今回は、静的ファイルは同一ドメイン内に配置しているのでconfig.action_controller.asset_path を使用した。config.action_controller.asset_path の使用方法は、Stringを渡す方法と proc を渡す方法の2種類。

String を使うときは printf のようになる。

config.action_controller.asset_path = "/app1/%s"

proc を使う場合は、ブロックの評価結果となる。

config.action_controller.asset_path do |path|
   "/app1#{path}"
end