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"
....
在 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"
....