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