In the past, fun with Perl..
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.
Enter rbenv – the Version Manager for Ruby.
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