更改Rails 3开发的基本URL

时间:2011-04-05 21:41:51

标签: ruby-on-rails ruby-on-rails-3 url-routing webrick

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

http://someserver/mydepartment/myapp

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

http://localhost:3000/myapp

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

http://localhost:3000/mydepartment/myapp

这样,我可以将所有网址都设为“/”,并且它们可以在两种环境中使用。

如何更改它以便我的应用程序将在我的开发环境中以此路径生效?

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

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

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"