所以我知道,如果我运行 bundler install --deployment ,它会将 gem 放在我的应用程序的 vendor 文件夹中,这对于我无法安装系统范围 gem 的共享主机之类的东西很有用。我的问题是,我应该把这个文件夹放到源代码控制(git)中,还是捆绑器需要在不同的系统上安装 gems,比如我们是在 mac 上开发并部署到 linux 上?
谢谢!克雷格
所以我知道,如果我运行 bundler install --deployment ,它会将 gem 放在我的应用程序的 vendor 文件夹中,这对于我无法安装系统范围 gem 的共享主机之类的东西很有用。我的问题是,我应该把这个文件夹放到源代码控制(git)中,还是捆绑器需要在不同的系统上安装 gems,比如我们是在 mac 上开发并部署到 linux 上?
谢谢!克雷格
您不应该将您的捆绑程序目录放入源代码管理中。您应该使用共享服务器目录来存储捆绑数据。
如果您使用的是 capistrano,请使用内置捆绑器 capistrano 任务:
(在您的 config/deploy.rb 中):
require 'bundler/capistrano'
如果没有,您应该创建一个在不同版本之间持续存在的共享包目录,即:/data/project/shared/bundle
bundle install --deployment --path /data/project/shared/bundle
编辑:每个代码库/项目应该有一个捆绑目录,而不是在项目之间共享。例如,每个 capistrano 部署目录都有自己的共享区域,该区域在版本之间共享,但不在部署的应用程序/代码库之间共享。