GEM_HOME和GEM_PATH有什么区别?

Mic*_*are 73 ruby rubygems

RubyGems是Ruby编程语言的包管理器,它提供了一种用于分发Ruby程序和库的标准格式(以一种称为"gem"的自包含格式),一种用于轻松管理gem的安装的工具,以及一个用于分发它们.它与Python编程语言的EasyInstall类似.RubyGems现在是Ruby 1.9版标准库的一部分.

那就是说,GEM_HOME和GEM_PATH之间的区别是什么?

Mic*_*are 92

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

GEM_HOME是安装宝石的地方(默认情况下).

(因此GEM_PATH应该包含GEM_HOME).

  • 从你的回答来看还不是特别清楚。`GEM_PATH` 类似于 gem 的 `PATH` (gem 所在的目录列表)。至少 `chruby` 将 `GEM_HOME` 设置为 `GEM_PATH` 中的第一项。 (2认同)

Gre*_*een 14

也有趣的通知.至少在Wndows XP上,不了解其他平台.

GEM_HOME在Windows中设置:

C:\>set GEM_HOME=C:\sbox\ruby\dump\.gems
Run Code Online (Sandbox Code Playgroud)

现在让我们检查一下.

1)在Windows ENVs中.一切都好,正如所料:

C:\>set
...
GEM_HOME=C:\sbox\ruby\dump\.gems
...
Run Code Online (Sandbox Code Playgroud)

2)有gem env.请注意它GEM_HOMEGEM_PATHs一起但是在第一位:

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/
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

GEM_PATH为空,表示默认值.但它从哪里采取默认值?见gem env.