What's the difference between GEM_HOME and GEM_PATH?

RubyRubygems

Ruby 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.

  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_PATHs 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:
  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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMichiel de MareView Question on Stackoverflow
Solution 1 - RubyMichiel de MareView Answer on Stackoverflow
Solution 2 - RubyGreenView Answer on Stackoverflow