我们正在使用Rails 3.2.17和Apache / Passenger。
最大的问题似乎是正确解决子uris问题。建议因几种不同的机制而有所不同。但是,有关如何为suburis正确配置Rails应用程序的信息分散在技术堆栈的多个层中,很难找到提供一致行为的设置星座。
RackBaseURI /suburi
<Location /suburi>
RackEnv production
SetEnv RAILS_RELATIVE_URL_ROOT "/suburi"
</Location>
config.assets.prefix='/suburi'
- Rails 3.1 asset pipeline with suburis config.relative_url_root='/suburi'
或ENV[RAILS_RELATIVE_URL_ROOT]='/suburi'
- http://edgeguides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root Rails.application.routes.default_url_options[:script_name] = '/suburi'
- https://github.com/rails/rails/issues/6933 还有其他几个(来自How to deploy Rails 3.1 app in a subdirectory)
map '/suburi'
在routes.rb scope '/suburi'
RailsBaseUri
(如上所述,不是RackBaseUri
- 这只是旧信息,还是与Rails 3.2.17 / Passenger 3相关?我在三种不同的背景下尝试过这些方法:
rails s
@ http://example.com:3000/suburi/(或http://example.com:3000/ 如果所有资产和网址仍有效!)RackEnv development
@ http://example.com/suburi RackEnv production
@ http://example.com/suburi 在我尝试的每一种排列中,不同的东西都有效,不同的东西都失败了。
例如,在一个排列中,资产来自&#39; / assets /...'而应用程序的其余部分来自&#39; / suburi /...'在其他人中,&#39; / suburi / assets&#39;服务,除了sass文件的font-url引用(由我可能添加的rails生成)。那些引用似乎仍然使用&#39; / assets /...'好像在erb助手和sass助手之间没有一致地使用变量设置suburi。
很多次(实际上数不胜数)我们得到了与webrick一起工作的东西,只是让它在乘客部署中失败了。或者我们让它在开发中的Passenger下工作,只是让它在生产中失败。在这个技术堆栈的不同层次上似乎有很多 magic 变量,而且很少有关于如何成功地将所有东西拼接在一起的综合指南。
我正在寻找上述参考文献中的一系列设置,这些设置在我提供的三种情境下提供了一致的行为。
完美的解决方案将允许所有三个上下文运行完全相同,没有任何损坏(意味着资产正常工作,字体正常工作,来自其他gem和供应商资产的插件正常工作,尤其是在使用标准Rails url交叉引用文件时帮助者,如font-url等。)
适当的解决方案将使Passenger部署的应用程序能够同样正常运行development
或production
(即我们宁愿不会对我们添加的宝石和/或其他js / css解决方案感到非常惊讶这似乎在开发中工作得很好,不能在生产中工作。
最小化解决方案将使所有这些部分仅在生产中起作用。
了解共识是否在Rails 3中无法实现所需行为也很有用。在这种情况下,我们可能会退出使用资产管道。