Skip to content

Instantly share code, notes, and snippets.

@RobertAudi
Forked from wayneeseguin/0_notes.txt
Created February 15, 2011 22:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RobertAudi/828425 to your computer and use it in GitHub Desktop.
Save RobertAudi/828425 to your computer and use it in GitHub Desktop.
RVM Project Environment done the right way
#!/usr/bin/env bash
# This is an RVM Project .rvmrc file, used to automatically load the ruby
# development environment upon cd'ing into the directory
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
environment_id="ruby-1.9.2-p136"
#
# First we attempt to load the desired environment directly from the environment
# file. This is very fast and efficicent compared to running through the entire
# CLI and selector. If you want feedback on which environment was used then
# insert the word 'use' after --create as this triggers verbose mode.
#
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
else
# If the environment file has not yet been created, use the RVM CLI to select.
rvm --create use "$environment_id"
fi
#
# If you use an RVM gemset file to install a list of gems (*.gems), you can have
# it be automatically loaded. Uncomment the following and adjust the filename if
# necessary.
#
# filename=".gems"
# if [[ -s "$filename" ]] ; then
# rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
# fi
#
# If you use bundler and would like to run bundle each time you enter the
# directory, you can uncomment the following code.
#
# # Ensure that Bundler is installed. Install it if it is not.
# if ! command -v bundle >/dev/null; then
# printf "The rubygem 'bundler' is not installed. Installing it now.\n"
# gem install bundler
# fi
#
# # Bundle while reducing excess noise.
# printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
# bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
#

This is an example of using RVM's Project .rvmrc file to have it automatically bootstrap your environment, including bundler. This could be further expanded to do anything you require :)

The important thing to remember is that the purpose of these files is to allow you to very easily have your 'project context' (aka 'environment') loaded automatically for you when you enter the project in the shell (cd).

You can generate the .rvmrc file above by running:

rvm --create --rvmrc use 1.9.2

Other examples:

rvm --create --rvmrc gemset use my_project
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment