如何避免共享捆绑文件夹下的多个gem

使用capistrano命令进行部署时,如何避免共享bundle文件夹下的多个gem。 大多数情况下,当我将gem从版本迁移到另一个版本时,共享捆绑包文件夹仍然包含这两个版本,从而导致问题。 我们该如何避免这种情况?

我不确定我是否曾见过这样的冲突。 但是我扩展了capistrano deploy:cleanup过时的捆绑器gem的deploy:cleanup任务:

 after "deploy:cleanup", "bundle:clean" namespace :bundle do task :clean, :except => {:no_release => true} do bundle_cmd = fetch(:bundle_cmd, "bundle") run "cd #{latest_release} && #{bundle_cmd} clean" end end 

如果它导致您发生冲突,您可以在deploy后执行此操作。

khustochka的答案完全解决了我的问题。 但是,如果您的系统使用的是Capistrano v3,则语法已发生显着变化。 我使用了以下内容:

 namespace :bundle do task :clean do on roles(:web) do within release_path do with rails_env: fetch(:rails_env) do execute :bundle, :clean end end end end end after "deploy:cleanup", "bundle:clean"