我知道我将部署到我的应用程序运行的环境中,其基本URL如下所示:
http://someserver/mydepartment/myapp
我的开发环境设置为使用默认的Rails配置,如下所示:
http://localhost:3000/myapp
我想在我的开发环境中对此部署路径进行建模。也就是说,我想开发一个基本URL,如下所示:
http://localhost:3000/mydepartment/myapp
这样,我可以将所有网址都设为“/”,并且它们可以在两种环境中使用。
如何更改它以便我的应用程序将在我的开发环境中以此路径生效?
我找到的解决方案,但不适合我:
scope
中设置routes.rb
似乎不适用于public
中的静态内容。 relative_url_root
以及与Rails 3不兼容的类似建议。答案 0 :(得分:15)
您可以尝试将rails app rack config映射到其他base_uri。 您需要做的就是将现有的“run”命令包装在地图块中
尝试在你的导轨' config.ru '文件中执行此操作:
map '/mydepartment' do
run Myapp::Application
end
现在,当你'使用服务器'时,应用程序应位于 localhost:3000 / mydepartment 。 不确定这是否会给你想要的结果,但值得一试。
答案 1 :(得分:5)
以下是如何将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
。
答案 2 :(得分:-1)
将以下行添加到config / environment.rb
的末尾ActionController::Base.relative_url_root = "/mydepartment"