Skip to content

Instantly share code, notes, and snippets.

@jrafanie
Last active August 7, 2016 04:57
Show Gist options
  • Save jrafanie/5424bc23a5c5fcbe5047 to your computer and use it in GitHub Desktop.
Save jrafanie/5424bc23a5c5fcbe5047 to your computer and use it in GitHub Desktop.
bundler: no place like gem home
$ bundler -v
Bundler version 1.9.7

Add git based rake to Gemfile:

$ cat Gemfile
source 'https://rubygems.org'

gem "rake", "=10.2.0", :git => "git://github.com/ruby/rake.git", :tag => "v10.2.0"

Verify git based rake is not already installed:

$ gem list rake

*** LOCAL GEMS ***

rake (10.4.2, 10.3.1, 10.1.0)

Install git based rake with bundler

$ bundle
Updating git://github.com/ruby/rake.git
Fetching gem metadata from https://rubygems.org/.
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using bundler 1.9.7
Using rake 10.2.0 (was 10.0.0) from git://github.com/ruby/rake.git (at v10.2.0)
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

View git based rake and various paths

$ bundle show rake
/Users/joerafaniello/.gem/ruby/2.1.6/bundler/gems/rake-0fc59143dbd9

$ echo $GEM_HOME
/Users/joerafaniello/.gem/ruby/2.1.6

$ echo $GEM_PATH
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0:/Users/joerafaniello/.gem/ruby/2.1.6

$ echo $BUNDLE_PATH

$ gem env home
/Users/joerafaniello/.gem/ruby/2.1.6

$ gem env path
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0

Unset GEM_HOME, bundle fails to locate git based rake

$ unset GEM_HOME

$ gem env home
/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0

$ echo $GEM_PATH
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0:/Users/joerafaniello/.gem/ruby/2.1.6

$ echo $GEM_HOME

$ echo $BUNDLE_PATH

$ bundle check
git://github.com/ruby/rake.git (at v10.2.0) is not yet checked out. Run `bundle install` first.

Try again with BUNDLE_PATH, works, git based rake is found:

$ BUNDLE_PATH=/Users/joerafaniello/.gem/ruby/2.1.6 bundle check
The Gemfile's dependencies are satisfied

Try again without it, fails, even though GEM_PATH is populated:

$ echo $GEM_PATH
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0:/Users/joerafaniello/.gem/ruby/2.1.6

$ bundle check
git://github.com/ruby/rake.git (at v10.2.0) is not yet checked out. Run `bundle install` first.

git based rake is found if GEM_HOME is set:

$ GEM_HOME=/Users/joerafaniello/.gem/ruby/2.1.6 bundle check
The Gemfile's dependencies are satisfied

Now, try a regular rubygems.org .gem based gem:

$ cat Gemfile
source 'https://rubygems.org'

gem "rake", "=10.2.0"

$ gem list rake

*** LOCAL GEMS ***

rake (10.4.2, 10.3.1, 10.1.0)
$ bundle
Fetching gem metadata from https://rubygems.org/..
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using bundler 1.9.7
Installing rake 10.2.0
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
$ bundle show rake
/Users/joerafaniello/.gem/ruby/2.1.6/gems/rake-10.2.0
$ echo $GEM_HOME
/Users/joerafaniello/.gem/ruby/2.1.6
$ echo $GEM_PATH
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0
$ echo $BUNDLE_PATH

$ gem env home
/Users/joerafaniello/.gem/ruby/2.1.6
$ gem env path
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0

Unset GEM_HOME and see that bundler finds the regular gem via GEM_PATH:

$ unset GEM_HOME
$ gem env home
/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0

~/Code/projects/bundler_no_place_like_gem_home (2.1.6) - echo $GEM_PATH
/Users/joerafaniello/.gem/ruby/2.1.6:/Users/joerafaniello/.rubies/ruby-2.1.6/lib/ruby/gems/2.1.0
$ echo $BUNDLE_PATH

$ bundle check
The Gemfile's dependencies are satisfied
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment