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