在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 帮助程序时,它会被丢弃,并且路径总是相对于根。
来自 egg_controller.rb:
edit_egg_path(1000) --> /rails_app/eggs/1000/edit
来自 some_model.rb:
edit_egg_path(1000) --> /eggs/1000/edit
这应该像我期望的那样工作吗?我根本不介意手动修复它,但我不知道在哪里可以找到 RackBaseURI 的值,所以我可以手动插入它(如果存在)。我不想在某些环境配置中再次手动定义它,因为 Rails 必须已经知道它。