我使用Capistrano部署我的Rails 4应用程序。在服务器上预编译资产非常慢,因此我使用RAILS_ENV=production bundle exec rake assets:precompile
在开发中手动预编译它并将其添加到我的git repo中。
我面临的问题是assets:precompile
任务不会删除旧资产。因此,我的公共资产中有application-<manifest code>.css
和application-<manifest-code>.js
的多个副本。
Capistrano有deploy:assets:clean_expired
任务,但我不知道如何在我的案例中复制它。我已经看到其他方法使用capistrano任务来预编译资产并对它们进行rsync。这个链接 - http://keighl.com/post/fast-rails-assets-precompile-capistrano/ - 使用turbo-sprockets-rails3
gem为Rails 3提供了一种方法。
此处有类似的问题 - Do I have to run rake assets:clean before rake assets:precompile?和Confusion about rake assets:clean / cleanup on the asset pipeline in rails
如何使其适应Rails 4?
答案 0 :(得分:1)
这对我来说效果很好 - https://gist.github.com/mishrarohit/7802260它使用git修订历史来检查是否对资产进行了任何更改。如果我们可以使用清单,那将会更好。