如何告诉Bundler使用已安装的系统范围内的宝石(生产部署)?[英] How to tell Bundler to use gems installed systemwide (production deployment)?

本文是小编为大家收集整理的关于如何告诉Bundler使用已安装的系统范围内的宝石(生产部署)?的处理方法,想解了如何告诉Bundler使用已安装的系统范围内的宝石(生产部署)?的问题怎么解决?如何告诉Bundler使用已安装的系统范围内的宝石(生产部署)?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

在使用Capistrano部署Rails应用程序时,我希望Bundler仅在无法找到已安装的GEM System Worker Antery Antery System Working的情况下将GEMS安装到shared/bundles dir.我该怎么做?

例如,如果我已经在系统上安装了pg GEM v 0.14,我希望Bundler使用它,而不是在我的应用程序的shared/bundles dir中构建和安装新的.

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

推荐答案

Bundler允许使用共享(RubyGems)和 vendored (bundler)GEMS,默认情况下bundler/capistrano配置了:

set :bundle_flags, "--deployment --quiet"

哪些仅强迫供应宝石,

您可以用显式切换回共享宝石:

set :bundle_flags, "--system --quiet"

仍然安装在vendor中,但也使用共享的宝石:

set :bundle_flags, "--path #{shared_path}/bundles --quiet"

如果已经使用--deployment(默认)运行部署,那么它可以帮助以下部署一次部署:

set :bundle_flags, "--no-deployment"

其他推荐答案

这实际上是捆绑器的功能,本质上是依赖性隔离 - 您不希望您的应用程序取决于外部的系统宝石.然后更新系统GEM可能会对运行应用程序产生影响.

如果您已经在使用Capistrano,则应在脚本中使用require "bundler/capistrano",无论如何,它都会在shared/bundles中安装它们.您也可以在随时随地查看包装: .html

本文地址:https://www.itbaoku.cn/post/786575.html