Passenger for Apache で Rails 3.2.13 を実行しています。私の仮想ホスト:
<VirtualHost *:80>
ServerName server
DocumentRoot /srv/http
<Directory />
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
RackEnv test
RackBaseURI /rails_app
<Directory /srv/http/rails_app>
Options -MultiViews
</Directory>
</VirtualHost>
よく働く。唯一の問題は、次のようにモデルでルート URL ヘルパーを使用していることです。
# egg.rb
def to_exhibit
return {
:edit_path => Rails.application.routes.url_helpers.edit_egg_path(self)
}
end
ビューで URL をレンダリングする場合、サブ URI は期待どおりに使用されますが、モデル内から URL ヘルパーにアクセスする場合は破棄され、パスは常にルートからの相対パスになります。
Eggs_controller.rb から:
edit_egg_path(1000) --> /rails_app/eggs/1000/edit
some_model.rb から:
edit_egg_path(1000) --> /eggs/1000/edit
これは期待どおりに機能するはずですか?これを手動で修正することはまったく気にしませんが、RackBaseURI の値が存在する場合は手動で挿入できるように、その値をどこで見つけるかについて困惑しています。Railsはすでにそれを認識している必要があるため、一部の環境confで手動で再度定義することは避けたいと思います。