我在生产环境中运行rails服务器,并且我预编译了我的资产,但由于某种原因,请求将转到/ assets目录而不是/ public。
我有默认的production.rb文件。可能导致这种情况的原因是什么?
# config/environments/production.rb
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.force_ssl = true
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
答案 0 :(得分:1)
请求将转到/assets
,这些请求由网络服务器提供在public
目录之外,该服务器应位于您的Rails应用程序前面。
由于您config.serve_static_assets
内false
设置为config/environments/production.rb
,因此Rails甚至不会尝试提供这些资产。
我建议将一个运行Passenger的Apache或Nginx服务器放在Rails前面,以便Apache或Nginx为您的应用程序提供资产和代理请求。
答案 1 :(得分:1)
您还可以更改:
config.serve_static_assets = true
然后您的资产将从/ public / assets提供,而无需使用Apache或Nginx。
对于开发,只需删除/ public / assets目录,然后它们将自动编译并从/ assets提供。