7

在Passenger尝试失败后(请参阅我的另一个问题),我设法通过子文件夹中的反向代理运行rails。我添加了线条

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

到我的环境。现在我可以在 www.mySite.com/App 下访问我的 rails 项目。问题是链接/路径没有添加前缀“/ App”。因此,指向“用户”的链接看起来像 www.mySite.com/users而不是www.mySite.com/App/users. 我怎样才能改变这个?

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

4

3 回答 3

3

我通过调整我的反向代理和我的 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"
于 2015-01-04T14:13:40.427 回答
2

在 Rails 4.2 中,我有同样的需求并解决了修改一些配置文件。路线.rb:

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

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

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

  Rails.application.config.assets.prefix = "/app/asset"
  ....
于 2016-08-21T21:29:35.603 回答
0

我不完全确定我是否理解你想要做的事情,但我认为你所描述的本质上是在命名空间下的所有控制器"/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
于 2015-01-04T02:16:27.847 回答