我正在尝试使用capistrano进行部署但是当我进行封顶部署时:更新它不是创建/当前文件夹,这是错误,有什么想法吗?
executing "cd /home/adamtodd/apps/homebase/current && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile --trace"
servers: ["xx.xxx.xx.xxx"]
[xx.xxx.xx.xxx] executing command
** [out :: xx.xxx.xx.xxx] bash: line 0: cd: /home/adamtodd/apps/homebase/current: No such file or directory
答案 0 :(得分:9)
当我在首次部署时使用Ben Curtis解决方案进行资产预编译(assets:precompile task redifinition)时遇到了同样的问题(部署:冷没有帮助我)
简单的解决方法here
namespace :deploy do
namespace :assets do
task :precompile, :roles => :web, :except => { :no_release => true } do
begin
from = source.next_revision(current_revision) # <-- Fail here at first-time deploy because of current/REVISION absence
rescue
err_no = true
end
if err_no || 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
end
答案 1 :(得分:1)
cap deploy:update
通常只适用于已经部署过的应用程序,因为您没有current
目录,因此我假设您的情况没有发生过。
尝试改为cap deploy:cold
。
答案 2 :(得分:1)
看起来你已经重新定义了deploy:assets:precompile任务,因为在Capistrano源代码中你可以看到它试图进入releases/12345
,而不是current
:
https://github.com/capistrano/capistrano/blob/master/lib/capistrano/recipes/deploy/assets.rb#L31-43
所以我会检查你的deploy.rb并删除重新定义的任务。
(我已经以相同的方式重新定义了任务,甚至添加了像你这样的--trace
,但是我试图解决的任何问题都不再是问题,并且开箱即用任务对我来说很好。如果我不得不猜测,我会说我们的自定义任务是将RAILS_GROUPS=assets
放入命令字符串,但Capistrano现在自动处理,因为你可以看到你检查链接的源代码。)