1

我刚刚注意到我收到了这个错误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

这是我需要关注的错误吗?

导轨 3.2.13

卡皮斯特拉诺 2.15.4

4

1 回答 1

4

使用 capistrano 进行部署时,每个版本都有一个assets_manifest文件,其中列出了该版本所需的所有资产。

当您运行清理时,capistrano 会聚合出现在任何版本的任何assets_manifest文件中的所有文件,并删除所有未出现在其中且早于.expire_assets_after

显然,您的其中一个部署没有资产更改,因此assets:precompile没有运行,并且此发布目录现在缺少 capistrano 在其清理任务中查找的 assets_manifest 文件。

如果它停止了您的部署,那么您显然应该关注它。否则,我会进行一些测试以查看资产确实被正确清理并在以后修复此错误。

顺便说一句-要解决您的问题,您可能必须更改clean_expiredcapistrano 的任务。您可以在此处找到确切的代码

于 2013-05-23T22:35:59.577 回答