我刚注意到我在cap deploy
上收到此错误:
No manifests in <dir>/releases/*/assets_manifest.*
这是cleanup
任务的一部分,我在添加任务以有条件地预编译资产后才开始获取它:
#precompile assets only when needed
namespace :assets do
task :precompile, :roles => :web, :except => { :no_release => true } do
from = source.next_revision(current_revision)
if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
else
logger.info "Skipping asset pre-compilation because there were no asset changes"
end
end
end
这是一个我需要关注的错误吗?
Rails 3.2.13
Capistrano 2.15.4
答案 0 :(得分:4)
使用capistrano进行部署时,每个版本都有一个assets_manifest
文件,其中列出了该版本所需的所有资产。
当您运行清理时,capistrano会聚合显示在任何版本的assets_manifest
文件的任意中的所有文件,并删除所有未显示的资产在他们中,他们比expire_assets_after
年长。
显然,您的某个部署没有资产更改,因此assets:precompile
未运行,此版本目录现在错过了capistrano在其清理任务中查找的assets_manifest文件。
如果它停止部署,那么你显然应该关注它。否则,我会做一些测试,看看资产确实正在被正确清理,并在以后修复此错误。
顺便说一下 - 为了解决你的问题,你可能不得不改变capistrano的clean_expired
任务。
您可以找到exact code here。