Ruby on rails 更改Rails 3开发的基本URL
我知道我要将应用程序部署到一个运行基本URL的环境中,该URL如下所示:Ruby on rails 更改Rails 3开发的基本URL,ruby-on-rails,ruby-on-rails-3,url-routing,webrick,Ruby On Rails,Ruby On Rails 3,Url Routing,Webrick,我知道我要将应用程序部署到一个运行基本URL的环境中,该URL如下所示: http://someserver/mydepartment/myapp http://localhost:3000/myapp http://localhost:3000/mydepartment/myapp 我的开发环境设置为使用默认Rails配置,如下所示: http://someserver/mydepartment/myapp http://localhost:3000/myapp http://loc
http://someserver/mydepartment/myapp
http://localhost:3000/myapp
http://localhost:3000/mydepartment/myapp
我的开发环境设置为使用默认Rails配置,如下所示:
http://someserver/mydepartment/myapp
http://localhost:3000/myapp
http://localhost:3000/mydepartment/myapp
我想在我的开发环境中对此部署路径进行建模。也就是说,我想开发一个基本URL,如下所示:
http://someserver/mydepartment/myapp
http://localhost:3000/myapp
http://localhost:3000/mydepartment/myapp
这样,我可以使我的所有URL都与“/”相关,并且它们在两种环境中都可以工作
我如何更改它,使我的应用程序在我的开发环境中按此路径运行
我找到了解决方案,但不适合我:
- 在
routes.rb中设置
似乎对scope
中的静态内容不起作用李>public
- 使用Apache的重写功能。我不想在我的开发箱上安装Apache。理想情况下,该解决方案将与WEbrick一起工作,尽管我似乎让Mongrel也能正常工作(Mongrel和Ruby 1.9.2存在一些问题)
- 设置
以及与Rails 3不兼容的类似建议relative\u url\u root
- 动态生成CSS/JavaScript并调整路径以在开发和生产环境之间进行补偿
ActionController::Base.relative_url_root = "/mydepartment"
您可以尝试将rails应用程序框架配置映射到其他基本uri。 您只需将现有的“run”命令包装到映射块中即可 尝试在rails“config.ru”文件中执行此操作:
map '/mydepartment' do
run Myapp::Application
end
现在,当您使用“rails服务器”时,应用程序应该位于localhost:3000/mydepartment。
不确定这是否会给您带来期望的结果,但值得一试。以下是如何将Rails 3.1应用程序部署到Apache中的子目录,替换不再存在的
config.action\u controller.relative\u url\u 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>
Alias/my_subdir/var/www/my_subdir/public
SetEnv RAILS\u RELATIVE\u URL\u ROOT“/my\u subdir”
PassengerAppRoot/var/www/my_subdir
它应该可以工作,包括自动将您的所有资产指向
/my_subdir
您用于开发的操作系统是什么?mac/linux/Windows我的开发操作系统是Windows。如何在生产中部署它?我会在本地尝试这样做。他们使用的是Passenger,它不在Windows上运行。我在尝试您的解决方案时看到这个错误…/actionpack-3.0.5/lib/action\u controller/deprecated/base.rb:11:in`relative\u url\u root=':参数数量错误(1代表0)(ArgumentError)ActionController::Base.relative\u url\u root在Rails 3.0及以上版本中不受支持。我不得不使用“map'/mydepartment/myapp'do”,即添加“/myapp”,但这确实奏效了。非常感谢你的帮助,巴洛!嗨@Barlow,我也有类似的情况,但我想知道是否有一种方法可以在运行时动态映射Rails应用程序?我为此提出了一个问题,并希望得到任何回复:请注意,这在Rails 4中不起作用。可以找到视图,但在使用资产url/路径帮助程序时,资产仍然映射到根目录。但是,服务器在根url上找不到资产。@Jason我应该为rails 4做什么=d这对我使用Rails 3.2.12而不修改routes.rb很有效