【问题标题】:Globally available Gemfile全球可用的 Gemfile
【发布时间】:2013-12-06 10:28:06
【问题描述】:

我在所有 Rails 项目中都使用了许多 gem,但它们不属于项目的 Gem,例如用于管理 POW 的粉末。

使用全局 Gemfile 管理这些对我来说很有意义,但我看不到任何这样的示例。

我应该如何管理我的项目 gemfile 中不需要的全局 Gem?当我设置新机器等时,最好有单点安装。

我正在使用 chruby 和 ruby​​-install 来管理我的 Ruby 版本。

【问题讨论】:

标签: ruby-on-rails ruby bundler gemfile


【解决方案1】:

像往常一样制作一个 Gemfile,并将其放在任何文件夹中。它不需要是项目文件夹。然后你可以这样做:

bundle install --system

这将在系统范围内的 Gemfile 中安装 gems,如果您无权访问系统文件夹,则会询问 root 密码。

--系统: 将捆绑包中的 gem 安装到系统位置。这会覆盖任何以前记住的 --path 用法。

如果您想以某种方式组织 Gemfile,您也可以命名它们:

bundle install --system --gemfile=/path/to/my_special_gemfile

【讨论】:

  • 我不明白的问题是How should I manage global Gems that I don't want in my project gemfiles?。这个答案怎么样?
  • 谢谢。您将如何为不同版本的 Ruby 管理 gem?每个 Ruby 版本都有不同的 Gemfile?
  • @Dolphin 怎么不是答案?
  • @Pedr 它将在系统上安装 gem,但它们将在项目 gemfile 中。例如,如果您运行 Rails 应用程序,所有 gem 都将在项目范围内。我很难你需要在系统上安装 gems 而不是项目的Gemfile
  • @Dolphin。它们不在项目的Gemfile 中。它们位于系统某处的单独Gemfile 中。看我的回答。也许现在你可以从这个答案中删除你的反对票,因为它是正确的。
【解决方案2】:

作为@Casper 答案的补充:

我为我的系统 Gem 文件创建了一个目录。

然后,我为每个要安装系统 gem 的 ruby​​ 版本添加了一个目录。我为每个目录添加了一个 Gemfile 和一个具有正确版本的 .ruby-version 文件。我现在可以使用以下方法为 ruby​​ 版本安装系统 gem:

$ cd path/to/system_gems_dir/1.9.3-p484
$ bundle install --system

$ cd cd path/to/system_gems_dir/2.0.0-p353
$ bundle install --system

【讨论】:

    【解决方案3】:

    您可以创建GlobalGemfile 文件(或任何您命名的文件),而且您做不到。

    bundle install --gemfile GlobalGemfile
    

    是不是很酷:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多