配置:Heroku上的Rails 4,HTML,CSS。
我有一个已经投入生产五个月的Rails 4应用程序。这是我的生产中的内容.rb:
config.serve_static_assets = false
# Do not 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.enabled = true
config.assets.initialize_on_precompile = true
config.action_controller.asset_host = "//dynasfakeurl.cloudfront.net"
每当我投入生产时,我都会使用rake assets:clean
清理资产,然后使用rake assets:precompile
预编译它们。这会指纹我的资产,并将其直接推送到我的S3静态文件桶,这些文件桶通过cloudfront提供。然后我将我的应用程序推送到Heroku。
在.html.erb主页上,我通过Rails标签调用我的静态文件:
<%= image_tag "picture.png" %>
<%= stylesheet_link_tag "application" %>
使用指纹正确渲染。例如,第二个最近生成此资产路径:http://dynasfakeurl.cloudfront.net/assets/application-17892abdffc77f1fb1be125bab.css
通常,这很有效。但是,我有一个问题,现在两次,在我最后一次推动12-16小时之后,我的所有资产路径都会自发地丢失指纹。例如,样式表标记上次生成了此资产路径:http://dynasfakeurl.cloudfront.net/stylesheets/application.css
。哪个不存在。因此,当我加载页面时,它无法加载资源。
我在过去的几个小时里一直试图调试这个问题但是无法弄清楚为什么我的资产路径会自发地发生,而不会推动任何事情,在生产中丢失指纹。