如何防止共享bundle文件夹中gems的过时引用

时间:2014-02-25 04:43:43

标签: ruby-on-rails capistrano

/home/ec2-user/app/shared/bundle/ruby/2.0.0/gems/ 

通过capistrano发布rails应用程序部署的上述文件夹包含同一gem的不同版本

e.g。 foo-1.0.0和foo-1.0.1以及foo-1.0.2

因为我在原始部署后将我的gem升级了两次(通过Gemfile.lock反映)。这导致应用程序无法正常工作,因为它不清楚哪个gem优先并为应用程序加载。如何确保在通过capistrano部署捆绑包时删除先前版本的陈旧引用。

1 个答案:

答案 0 :(得分:1)

当您在部署之间使用持久的共享捆绑目录时,您可以快速处理此类问题。

您有两种选择:

  1. 升级gem
  2. 时手动清除共享软件包目录
  3. 在发布中使用捆绑目录
  4. 如果要在发布目录中使用非共享包目录,则只能安装当前版本的gem和支持文件。但是,每次部署时都必须安装所有捆绑的gem。

    当部署出现问题并失败时,我会选择#1并清除bundle安装目录。 #2更安全并且始终有效,但速度较慢。