不一致的资产预编译Rails 4和Heroku

时间:2014-01-13 19:24:06

标签: heroku ruby-on-rails-4 asset-pipeline

最近在Heroku上从3.2升级到Rails 4.0.2。我注意到,我的stylesheet_link_tagjavascript_include_tag标记可能指向我的开发路径(即/assets/admin.css),而不是我的生成/预编译@指纹路径,例如{{1} }

以下是production.rb的相关设置:

/assets/admin-a334a2cf57ed6ffc29f7f7a1af35f380.css

因为我在Heroku上,所以# Don't fallback to assets pipeline if a precompiled asset is missed config.assets.compile = false # Generate digests for assets URLs config.assets.digest = true 中有config.assets.initialize_on_precompile = false。如果我对资产文件进行了任何更改,那么在部署之前我总是运行application.rb

这是我的文件夹层次结构:

bundle exec rake assets:precompile

这是我的application.config

app
 -assets
   -images
   -javascripts
   -stylesheets
     -themes
       dark.css
       blue.css
       etc...
     admin.css
     application.css
     jobboard.css

但由于某种原因,我在制作中遇到了这种不一致的行为。所有文件都预编译。但有时admin.css文件没有被指纹引用,对于/ themes下的css文件也是如此。有关为什么会发生这种情况的任何线索?

1 个答案:

答案 0 :(得分:0)

如果缺少预编译文件,您可以将它们添加到config / application.rb

config.assets.precompile += %w( admin.css )

然后

RAILS_ENV=production bundle exec rake assets:precompile

您可以在清单(公共/资产)中检查丢失的文件或查看指纹。