我正在使用以下方式在本地运行我的登台服务器:
RAILS_ENV=staging rails console -p 1337
我有预编译资产,一切正常,但我无法找到如何提供这些资产。我在staging.rb中有这个:
config.serve_static_assets = false
在我的apache vhost中,如果我在80上听,我可以访问我的资产:
http://domain.local/assets/application.css
但是,如果我在1337上听,与我的rails服务器相同的端口,那么rails会吐出404.我的困惑是,我已经告诉rails不要发送给service_static_assets,那么为什么要尝试为它们服务呢? / p>
http://domain.local:1337/assets/application.css
我一定错过了什么。该网站显示正常,只返回所有资产404:
ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):
答案 0 :(得分:5)
通过
访问您的应用程序时http://domain.local:1337/
你没有通过Apache。
如果您只想使用WEBrick(RAILS_ENV = staging rails s -p 1337)运行它,那么您应该设置
config.serve_static_assets = true
你的staging.rb中的。这将使WEBrick在您通过
访问您的应用程序时提供预编译资产http://domain.local:1337
为了使用Apache提供的预编译资产,您应该考虑将Apache(或Nginx)与Ruby模块(如Phusion Passenger)结合使用。然后,您就可以通过
访问您的应用http://domain.local
这将使Apache为您的资产提供服务,并将所有其他请求转发给模块。您可以阅读有关此here
的更多信息