[Rubyinstaller-devel] Pik and GEM_HOME, GEM_PATH and my environment

Luis Lavena luislavena at gmail.com
Sun Jun 21 13:16:07 EDT 2009


Hello Guys,

I wanted to share my lovely experience so far using Pik...

I just love it!

Gordon: thank you for making by batch files (rb18 and rb19) deprecate
so easily :-D

I've a few comments so far on this, and my results of trying to hack
GEM_PATH and GEM_HOME in the gem_home branch, please take those with a
grain of salt since I haven't invested a lot of time on understanding
Pik too much :-D

First, my background:

I don't install gems inside each ruby installation. Instead, I install
them into a share ".gems" place in my HOME.

But I don't share gems between 1.8.x and 1.9.x (which is a bummer for
binary gems)

So, what I did is follow what Gem.default_path returns:

C:\Users\Luis\Tools>SET GEM_HOME=

C:\Users\Luis\Tools>SET GEM_PATH
GEM_PATH=C:\Users\Luis\.gem\ruby\1.8

C:\Users\Luis\Tools>irb
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> Gem.default_path
=> ["C:\\Users\\Luis/.gem/ruby/1.8",
"C:/Users/Luis/Tools/Ruby/ruby-1.8.6-p368-i386-mingw32/lib/ruby/gems/1.8"]
irb(main):003:0>

As you can see, the first option is ".gem/ruby/1.8"

Now, the same for 1.9.x:

C:\Users\Luis>irb
irb(main):001:0> require 'rubygems'
=> false
irb(main):002:0> Gem.default_path
=> ["C:\\Users\\Luis/.gem/ruby/1.9.1",
"C:/Users/Luis/Tools/Ruby/ruby-1.9.1-p129-i386-mingw32/lib/ruby/gems/1.9.1"]
irb(main):003:0>

Notice that the version is not "1.9" but "1.9.1", this is because it
uses RbConfig::CONFIG['ruby_version'] to determine the version of the
API compatibility layer.

FYI: 1.9.2-dev so far remains as 1.9.1.

So, with that in mind, wanted to replicate this into my "ruby
switching" scripts, which I lamely put here:

http://github.com/luislavena/binfiles/blob/master/rb18.bat
http://github.com/luislavena/binfiles/blob/master/rb19.bat

As you can see, pretty lame, but works.

Since I don't have time right now to update my previous multiruby
scripts, used those batches for long time.

Anyhow, been trying to put this into Pik, but I'm stuck. Since
GEM_HOME should also be in the PATH (with \bin)... wonder:

Shouldn't switch_path_to defer it's writing and return the resulting
PATH? In that way, I should be able to hook, under the same PATH of
GEM_HOME, instead of default to ENV['PATH'] as is right now.

Comments? Suggestions?

Thank you!
-- 
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry


More information about the Rubyinstaller-devel mailing list