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

时间:2013-03-09 18:24:00

标签: ruby-on-rails capistrano

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

2 个答案:

答案 0 :(得分:4)

我不确定我是否曾见过这样的冲突。但我已经扩展了capistrano 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之后执行此操作。

答案 1 :(得分:1)

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"

相关问题