更改Rails 3开发的基本URL

我知道我将部署到我的应用程序运行的环境中,其基本URL如下所示:

http://someserver/mydepartment/myapp 

我的开发环境设置为使用默认的Rails配置,如下所示:

 http://localhost:3000/myapp 

我想在我的开发环境中对此部署路径进行建模。 也就是说,我想使用基本URL进行开发,如下所示:

 http://localhost:3000/mydepartment/myapp 

这样,我可以将所有url都设置为“/”,并且它们可以在两种环境中工作。

我如何更改它,以便我的应用程序将在我的开发环境中生活在这条路径上?

我找到的解决方案,但不适合我:

  • routes.rb中设置scope似乎不适用于public的静态内容。
  • 使用Apache的重写function。 我不想在我的开发盒上安装Apache。 理想情况下,该解决方案可以与WEbrick一起使用,但我似乎也使Mongrel工作得很好(Mongrel和Ruby 1.9.2存在一些问题)。
  • 设置relative_url_root和类似的建议,这些建议不适用于Rails 3。
  • 动态生成CSS / JavaScript并调整路径以补偿开发和生产环境。

您可以尝试将rails app rack config映射到不同的base_uri。 您需要做的就是将现有的’run’命令包装在一个map块中

尝试在rails’config.ru ‘文件中执行此操作:

 map '/mydepartment' do run Myapp::Application end 

现在,当你’使用服务器’时,应用应该在localhost:3000 / mydepartment 。 不确定这是否会给你想要的结果,但值得一试。

以下是如何将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  SetEnv RAILS_RELATIVE_URL_ROOT "/my_subdir" PassengerAppRoot /var/www/my_subdir  

它应该工作,包括自动将所有资产指向/my_subdir

将以下行添加到config / environment.rb的末尾

 ActionController::Base.relative_url_root = "/mydepartment"