Rails relative_url 不调整链接

Rails relative_url doesnt adjust links

在 Passenger 尝试失败后(参见我的其他问题),我设法通过子文件夹中的反向代理运行 rails。 我添加了行

config.relative_url_root = "/App"
config.action_controller.relative_url_root = "/App"

我的环境。现在我可以在 www.mySite.com/App 下访问我的 rails 项目。问题是 links /paths 没有添加前缀“/App”。所以 link 到 "users" 看起来像 www.mySite.com/users 而不是 www.mySite.com/App/users。 我该如何更改?

至少根据 http://edgeguides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root 我做的一切都是正确的。

我不完全确定我是否理解您正在尝试做的事情,但我认为您所描述的本质上是在 "/App" 或类似名称下对所有控制器进行命名空间。这将在您的 routes.rb 文件中:

namespace "App" do

  # Put your resources here, as however you defined them before, e.g.:  
  resources :users, :decks, :cards, :revs, :sessions

end

我通过调整我的反向代理和我的 rails 配置来让它工作,如下所示。 这是我对应的 apache 文件:

<VirtualHost *:80>
DocumentRoot /path/to/App/public
ProxyPass /App http://127.0.0.1:9292/App
ProxyPassReverse /App http://127.0.0.1:9292/App
</VirtualHost>

我的 config.ru 看起来像这样:

require ::File.expand_path('../config/environment',  __FILE__)
map '/App' do
  run Rails.application
end

上述环境变量设置在/config/environment.rb。我不确定是否还需要它们:

config.relative_url_root = "/App"
config.action_controller.relative_url_root = "/App"
ENV['RAILS_RELATIVE_URL_ROOT']  = "/App"
ENV['ROOT_URL']  = "/App"

在Rails4.2,我有同样的需求,解决了修改一些配置文件。 Routes.rb:

Rails.application.routes.draw do
  scope :mytm do
     ....
  end 
end 

这不需要对应用程序进行任何修改。

此外,您必须重新配置资产管道,在 /config/initializers/assets.rb:

  Rails.application.config.assets.prefix = "/app/asset"
  ....