我刚刚注意到我在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
发布于 2013-05-24 06:36:00
在使用capistrano进行部署时,每个版本都有一个assets_manifest文件,其中列出了该版本所需的所有资产。
运行清理时,capistrano会聚合出现在any release的assets_manifest文件的任何中的所有文件,并删除未出现在这些文件中且比expire_assets_after旧的所有资源。
显然,您的一个部署没有资产更改,因此assets:precompile没有运行,并且此发布目录现在缺少capistrano在其cleanup任务中查找的assets_manifest文件。
如果它停止了您的部署,那么您显然应该关注它。否则,我将进行一些测试,以查看资产是否确实被正确清理,并在以后修复此错误。
顺便说一下--为了解决你的问题,你可能需要修改capistrano的clean_expired任务。您可以找到exact code here。
https://stackoverflow.com/questions/16724555
复制相似问题