如何告诉Bundler使用全系统安装的gems(生产部署)?
当使用Capistrano部署Rails应用程序时,我希望Bundler只在已经找到全系统安装的gems的情况下才能将gem安装到shared/bundles
目录。 我该怎么做?
例如,如果我已经在系统上安装了pg
gem v 0.14
,我希望Bundler使用它,而不是在我的应用程序的shared/bundles
目录中构建和安装新的。
我正在使用Ubuntu Server,并为多个用户安装了RVM。
Bundler允许使用共享 (rubygems)和vendored (bundler)gem,默认情况下, bundler/capistrano
配置为:
set :bundle_flags, "--deployment --quiet"
只强制出售gem,
你可以用显式切换回共享的gem:
set :bundle_flags, "--system --quiet"
仍然在vendor
安装,但也使用共享gem:
set :bundle_flags, "--path #{shared_path}/bundles --quiet"
如果部署已经使用--deployment
(默认值)运行,则可以帮助运行部署一次:
set :bundle_flags, "--no-deployment"
这实际上是Bundler的一个function,本质上它是依赖性隔离 – 你不希望你的应用依赖于这样的外部系统gem。 然后,更新系统gem可能会对运行的应用程序产生影响。
如果您已经在使用capistrano,那么您应该在脚本中使用require "bundler/capistrano"
,无论如何都要将它们安装在shared/bundles
。 您也可以事先了解包装: http : //gembundler.com/v1.2/bundle_package.html