Why the need for multiple $GEM_PATHS

Hi all,

Can some tell me why we need a $GEM_PATH location per ruby versions when
using tools like RVM & rbenv?

I would like to switch between rubies without always need to download
the
gem’s a second time as I am currently working off a very poor internet
connection.

Thanks!
Luke H.

When I let go of what I am, I become what I might be. Lao Tzu

tool like rbenv can set what ruby version should on your
project/directory
. i mean you can use diferent ruby version for different
project/directory.
for that, gems need match ruby version for execute on command line. i
think
is reason why gem location in each ruby version.

Pada Sabtu, 13 Juli 2013 13:20:47 UTC+7, Luke H. menulis:

also appeared in Ruby Parley - moved to

$GEM_HOME is a way of controlling rubygems gems install location:

  • benefits: thanks to GEM_HOME you can install ruby as “root” and gems
    as
    users, or reinstall ruby without removing gems, it allows you to
    separate
    the ruby directory from gems direcotry, you can also maintain multiple
    sets
    of gems by manipulating GEM_HOME to different directories - this is how
    rvm
    gemsets work

  • problems: the need to use different gem paths per ruby/version exist
    because some gems might require specific ruby version, compiled
    c-extensions or might include implementation specific code/libraries,
    they
    can not be mixed all together, but that’s just few percent of gems -
    rest
    of them can be mixed in one directory and it is what I have implemented
    in
    the pull request mentioned above

Cheers,
Michal

You only need multiple copies of any gems that require a specific
version
to run with your current ruby. GEM_PATH can include multiple
directories
just as the shell PATH does. So if you’re running two different ruby
environments, RUBY_A and RUBY_B, you could use a GEM_PATH that looks
like:

RUBY_A_GEM_PATH=a_gems_dir:common_dir
RUBY_B_GEM_PATH=b_gems_dir:common_dir

I ended up switching from rbenv to chruby as its only keeps one GEM_PATH
location per major version of rubies and not a new location for all the
patch levels. And its much simpler too. :slight_smile:

Kind regards,
Luke H.

+61 0430223558
@lukekhamilton

“When I let go of what I am, I become what I might be.” – Lao Tzu

On Sat, Jul 13, 2013 at 2:49 PM, Luke H. [email protected]
wrote:

Luke H.

“When I let go of what I am, I become what I might be.” – Lao Tzu

Different ruby enviroments (called gemset) should have gems installed
separately. What if I uninstall a specific gem version across all ruby
versions?

Besides that, some gem has native extension which compiled according to
target ruby version.

If you don’t like the rubygems / bundler to download the same gem file
over
and over again, you could try something like gem server (like this1)
or
cache them locally.


Silence is golden.

twitter: @AccelReality
wikipedia: AleiPhoenix
blog: weblog.areverie.org
wiki: wiki.areverie.org