Rails资产是预编译的,但生产环境正在/ assets中查找它们

时间:2012-10-10 04:17:51

标签: ruby-on-rails

我在生产环境中运行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

2 个答案:

答案 0 :(得分:1)

请求将转到/assets,这些请求由网络服务器提供在public目录之外,该服务器应位于您的Rails应用程序前面。

由于您config.serve_static_assetsfalse设置为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提供。