/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部署捆绑包时删除先前版本的陈旧引用。
答案 0 :(得分:1)
当您在部署之间使用持久的共享捆绑目录时,您可以快速处理此类问题。
您有两种选择:
如果要在发布目录中使用非共享包目录,则只能安装当前版本的gem和支持文件。但是,每次部署时都必须安装所有捆绑的gem。
当部署出现问题并失败时,我会选择#1并清除bundle安装目录。 #2更安全并且始终有效,但速度较慢。