如何将Rails 3.1应用程序配置为在特定目录(如“/ r”)下运行?
我在config.ru中尝试过:
map '/r' do
run Debtor::Application
end
但刚刚返回“未找到:/ r”
为了让它起作用,我必须将所有路径包含在范围内:
scope '/r' do
#routes
end
并将以下行添加到config / applcation.rb
config.assets.prefix = "/r/assets"
并将我的jquery ui css文件从/ stylesheets移动到/ r / stylesheets。
这似乎太复杂了。是不是有一个更简单的方法?为什么我的config.ru设置不起作用?我的用例是为wordpress服务器配备一个rails供电的ajax后端。
答案 0 :(得分:6)
然后RailsBaseURI可能就是你想要的。
https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-sub-uri
如果没有在乘客下运行,请更新您的问题以显示您的部署情况。
答案 1 :(得分:4)
对我有用的是为子uri(/ info)创建应用程序的'public'文件夹的符号链接(在我的服务器上的另一个用户下设置,/ home / otheruser / current / public)。 / p>
ln -s /home/myapp/current/public /home/mysite/public_html/info
然后我将此配置插入到站点的VirtualHost条目中:
Alias /info /home/myapp/current/public
<Location /info>
PassengerAppRoot /home/myapp/current
RackEnv production
RackBaseURI /info
</Location>
没有范围的路由,没有资产前缀配置。
答案 2 :(得分:3)
以下是如何将Rails 3.1应用程序部署到Apache中的子目录,替换不再存在的config.action_controller.relative_url_root
。
在config/routes.rb
:
scope 'my_subdir' do
# all resources and routes go here
end
在Apache配置文件中:
Alias /my_subdir /var/www/my_subdir/public
<Location /my_subdir>
SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir"
PassengerAppRoot /var/www/my_subdir
</Location>
它应该有效,包括自动将所有资产指向/my_subdir
。