When I was using perl as my primary development language, I had a platform of tools in place to make my perl development fun and productive. This included tools like Perl::Dancer, DBIx::Class, cpanm, and perlbrew. Perlbrew was a tool I used to maintain multiple versions of perl in my local development environment, so that I could test my code against multiple perl and module versions to ensure that it worked on the largest range of platforms ( and to avoid dependency related bugs ).
This allowed me to run my code against Perl 5.10, 5.12, and 5.14, and so on each with their own module-base, fully isolated from each-other.
Now I’m working with many different tools these days, and haven’t had the opportunity to work with other languages to the extent that I’ve worked with Perl, but I have been playing with Ruby and Golang. Using Ruby, I immediately thought that I would like to play with multiple versions of Ruby without altering the ‘system’ ruby on my workstation. A quick search of ‘perlbrew for ruby’ lead me to rbenv which seems to be exactly what I was looking for.
Some examples of how rbenv works:
# list all available versions: $ rbenv install -l # install a Ruby version: $ rbenv install 2.0.0-p247 # Sets a local application-specific Ruby version by writing the version name to a .ruby-version file in the current directory. $ rbenv local 1.9.3-p327 # Sets the global version of Ruby to be used in all shells by writing the version name to the ~/.rbenv/version file. $ rbenv global 1.8.7-p352 # Sets a shell-specific Ruby version by setting the RBENV_VERSION environment variable in your shell $ rbenv shell jruby-1.7.1 # Lists all Ruby versions known to rbenv, and shows an asterisk next to the currently active version. $ rbenv versions 1.8.7-p352 1.9.2-p290 * 1.9.3-p327 (set by /Users/sam/.rbenv/version) jruby-1.7.1 rbx-1.2.4 ree-1.8.7-2011.03 # Displays the currently active Ruby version, along with information on how it was set. $ rbenv version 1.9.3-p327 (set by /Users/sam/.rbenv/version) # Displays the full path to the executable that rbenv will invoke when you run the given command. $ rbenv which irb /Users/sam/.rbenv/versions/1.9.3-p327/bin/irb