Reputation: 42420
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?
Upvotes: 91
Views: 51759
Reputation: 6552
From the official docs for GEM ENVIRONMENT at https://guides.rubygems.org/command-reference/
RubyGems’ default local repository can be overridden with the GEM_PATH and GEM_HOME environment variables.
GEM_HOME sets the default repository to install into.
GEM_PATH allows multiple local repositories to be searched for gems
Upvotes: 0
Reputation: 42420
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
).
Upvotes: 110
Reputation: 30805
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.
1) In Windows ENVs. All OK, as expected:
C:\>set
...
GEM_HOME=C:\sbox\ruby\dump\.gems
...
2) With gem env
. Notice it puts GEM_HOME
along with GEM_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:
- https://rubygems.org/
3) 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
.
Upvotes: 15