1

使用 Capistrano 部署 Rails 应用程序时,我希望 Bundlershared/bundles仅在找不到已在系统范围内安装的 gem 时将 gem 安装到目录。我该怎么做?

例如,如果我已经在系统上安装了一个pggem ,我希望 Bundler 使用它,而不是在我的应用程序的目录中v 0.14构建和安装一个新的。shared/bundles

我正在使用 Ubuntu Server,并且为多个用户安装了 RVM。

4

2 回答 2

4

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"
于 2013-02-12T16:09:03.883 回答
0

这实际上是 Bundler 的一个特性,本质上是依赖隔离——你不希望你的应用程序依赖于像这样的外部系统 gem。更新系统 gem 可能会对正在运行的应用程序产生影响。

如果您已经在使用 capistrano,那么您应该在脚本中使用它,无论如何require "bundler/capistrano"都会安装它们。shared/bundles您也可以事先查看包装:http: //gembundler.com/v1.2/bundle_package.html

于 2013-02-12T15:50:52.240 回答