GEM_HOME 和 GEM_PATH 有什么区别?

问题描述 投票:0回答:3

RubyGems 是 Ruby 编程语言的包管理器,它提供了分发 Ruby 程序和库的标准格式(以称为“gem”的独立格式)、一个旨在轻松管理 gems 安装的工具和一个服务器用于分发它们。它类似于 Python 编程语言的 EasyInstall。从 Ruby 版本 1.9 开始,RubyGems 现已成为标准库的一部分。

也就是说,GEM_HOME 和 GEM_PATH 有什么区别?

ruby rubygems
3个回答
110
投票

GEM_PATH
提供可以找到宝石的位置(可能有多个)。

GEM_HOME
是将安装 gems 的位置(默认情况下)。

(因此

GEM_PATH
应包括
GEM_HOME
)。


15
投票

还有一个有趣的通知。至少在Wndows XP上是这样,其他平台不知道。

在 Windows 中设置

GEM_HOME

C:\>set GEM_HOME=C:\sbox\ruby\dump\.gems

现在让我们检查一下。

1) 在 Windows ENV 中。一切正常,正如预期的那样:

C:\>set
...
GEM_HOME=C:\sbox\ruby\dump\.gems
...

2)与

gem env
。请注意,它将
GEM_HOME
GEM_PATH
一起放在第一位:

C:\>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/sbox/ruby/dump/.gems
  - RUBY EXECUTABLE: C:/Ruby200/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/sbox/ruby/dump/.gems/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/sbox/ruby/dump/.gems
     - C:/Documents and Settings/User/.gem/ruby/2.0.0
     - C:/Ruby200/lib/ruby/gems/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

3)现在

bundle env

C:\>bundle env
Bundler 1.3.4
Ruby 2.0.0 (2013-02-24 patchlevel 0) [i386-mingw32]
Rubygems 2.0.3
GEM_HOME C:\sbox\ruby\dump\.gems
GEM_PATH

GEM_PATH
为空,表示默认值。但它的默认值从哪里来呢?请参阅
gem env


0
投票

来自 GEM ENVIRONMENT 的官方文档,位于 https://guides.rubygems.org/command-reference/

RubyGems 的默认本地存储库可以用 GEM_PATH 覆盖 和 GEM_HOME 环境变量。
GEM_HOME 设置要安装到的默认存储库。
GEM_PATH 允许在多个本地存储库中搜索 gems

© www.soinside.com 2019 - 2024. All rights reserved.