What's the difference between GEM_HOME and GEM_PATH?
RubyRubygemsRuby Problem Overview
RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries (in a self-contained format called a "gem"), a tool designed to easily manage the installation of gems, and a server for distributing them. It is analogous to EasyInstall for the Python programming language. RubyGems is now part of the standard library from Ruby version 1.9.
That said, what's the difference between GEM_HOME and GEM_PATH?
Ruby Solutions
Solution 1 - Ruby
GEM_PATH
provides the locations (there may be several) where gems can be found.
GEM_HOME
is where gems will be installed (by default).
(Therefore GEM_PATH
should include GEM_HOME
).
Solution 2 - Ruby
Also interesting notice. At least on Wndows XP, don't know about other platforms.
Set GEM_HOME
in Windows:
C:\>set GEM_HOME=C:\sbox\ruby\dump\.gems
Now let's check this.
-
In Windows ENVs. All OK, as expected:
C:>set ... GEM_HOME=C:\sbox\ruby\dump.gems ...
-
With
gem env
. Notice it putsGEM_HOME
along withGEM_PATH
s but at the first place: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:
-
Now with
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
is empty, it means default value. But from where does it take the default value? See gem env
.