使用capistrano删除远程目录

我正在使用Capistrano将Ruby on Rails应用程序部署到服务器。 一切正在运行,直到捆绑安装被调用的时候,在这种情况下,我得到错误“一些gem似乎从你的供应商/caching目录中缺less。

这个错误是由于在Capistrano克隆的git仓库的vendor / cache目录中检查了一些gems。 我知道最好的方法是清理git仓库,但由于这不是我的select,我希望Capistrano删除git克隆之后,但在捆绑调用之前在远程服务器上的供应商/caching目录。 我已经手动运行的步骤,发现通过手动删除目录捆绑执行正确,但我似乎无法弄清楚如何让Capistrano执行删除。

这是从我的deploy.rb文件相关的片段:

after "deploy:update_code" do run "rm -rf #{release_path}/vendor/cache" end after "deploy:update_code", "bundle:install" 

这里是命令行输出

 executing `deploy:update_code' executing locally: "git ls-remote my_git_repository HEAD" command finished in xxxms * executing "git clone [snipped for brevity] servers: ["my_server"] [my_server] executing command ** [my_server :: out] Error reading response length from authentication socket. ** [my_server :: out] command finished in xxxms * executing `deploy:finalize_update' triggering before callbacks for `deploy:finalize_update' * executing `bundle:install' * executing "[snipped for brevity] bundle install [snipped for brevity]" servers: ["my_server"] [my_server] executing command ** [out :: my_server] Some gems seem to be missing from your vendor/cache directory. ** [out :: my_server] ** [out :: my_server] Could not find gem-version in any of the sources ** [out :: my_server] command finished in xxxms 

它看起来不像run "rm -rf #{release_path}/vendor/cache"得到运行。 我使用正确的命令? 任何其他想法,我应该做什么?

我想知道是否这个任务正在运行的顺序是一个问题; 也许尝试以下?

 task :clean_vendor_cache do run "rm -rf #{release_path}/vendor/cache" end before "bundle:install", "clean_vendor_cache"