【发布时间】:2014-01-13 19:24:06
【问题描述】:
最近在 Heroku 上从 3.2 升级到 Rails 4.0.2。我注意到,可能所有其他推送我的stylesheet_link_tag 和javascript_include_tag 标签都指向我的开发路径(即/assets/admin.css),而不是我的生产/预编译@指纹路径,例如/assets/admin-a334a2cf57ed6ffc29f7f7a1af35f380.css
这里是 production.rb 的相关设置:
# 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
因为我在 Heroku 上,所以我在 application.rb 中有 config.assets.initialize_on_precompile = false。因此,如果我对资产文件进行了任何更改,我总是在部署之前运行bundle exec rake assets:precompile。
这是我的文件夹层次结构:
app
-assets
-images
-javascripts
-stylesheets
-themes
dark.css
blue.css
etc...
admin.css
application.css
jobboard.css
这是我的 application.config
config.assets.precompile += [
'admin.css',
'admin.js',
'jobboard.js',
'jobboard.css',
'themes/dark.css',
'themes/blue.css',
'themes/green.css',
'themes/plain.css',
'themes/seafoam-flat.css',
'themes/fire-flat.css'
]
但由于某种原因,我在生产中得到了这种不一致的行为。所有文件预编译。但有时 admin.css 文件不会被指纹引用,对于 /themes 下的 css 文件也是如此。关于为什么会发生这种情况的任何线索?
【问题讨论】:
-
您能否重新编译您的资产,看看在此过程中是否有错误或丢失的文件?
标签: heroku ruby-on-rails-4 asset-pipeline