编译文件没有获得指纹轨道

时间:2013-12-18 10:13:45

标签: javascript ruby-on-rails ruby asset-pipeline

我有许多部署应用程序的环境。在其中两个中,我为资产部署了以下配置:

config.assets.enabled    = true
config.assets.compress   = false
config.assets.compile    = true
config.assets.precompile = false
config.assets.digest     = true
config.assets.debug      = false
config.serve_static_assets = true

我的applicaton.js,在其上编译了许多.js文件,没有获得指纹,因此我不会对已经缓存它的客户提供更改。

然后,该网页会为除application.js

之外的所有预编制指纹的资产提供服务

我在哪里可以开始寻找这种失败?

1 个答案:

答案 0 :(得分:0)

罪魁祸首是以下选项:

config.assets.compile = true

它将直接编译每个没有指纹的文件并直接为rails提供服务

您应该将其设置为false并使用config.assets.precompile,其中应包含所有预编译文件的列表:

config.assets.precompile += %w(application.js foo.js)

然后不要忘记在部署任务中运行rake assets:precompile以重新编译新资产。

另外,您还应该将config.serve_static_assets设置为false并让nginx / apache /您的Web服务器为您处理它,从rails提供资产会产生很大的开销。