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:
$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
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:
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.
Kind regards,
Luke H.
+61 0430223558 @lukekhamilton
“When I let go of what I am, I become what I might be.” – Lao Tzu
“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.