Cut Rubies with ease...
Ruby Version Manager (RVM)
Introduction
RVM is a command line tool which allows us to easily install, manage and work with multiple ruby environments from interpreters to sets of gems.
Production
RVM allows users to deploy each project with its own completely self contained and dedicated environment--from the specific version of ruby all the way down to the precise set of required gems to run the application. Having a precise set of gems also avoids the issue of version conflicts between projects, causing difficult-to-trace errors and hours of hair loss. With rvm, NO OTHER GEMS than those required are installed. This makes working with multiple complex applications where each has a long list of gem dependencies simple. RVM allows us to easily test gem upgrades by simply switching to a new clean set of gems to test with while leaving our original set intact. It is flexible enough to even have a set of gems per environment or development branch--or even individual developer's taste!
Development
RVM greatly simplifies the many facets of ruby development through a simple command line API. RVM allows you to have **identical** self-contained environments in your Development, CI, Q/A, Staging, and Production environments. No more hidden gotchas. If it works for one of them it will work in all of them. With named gem sets, it is simple to push a change from one environment to another. And, RVM is not just for Rails! Any ruby based application will benefit from usage of RVM.Testing
RVM enables us to easily test both upgrade and escape paths very easily and consistently. RVM has the ability to run a test suite, rake tasks, benchmarks and gem commands against multiple ruby versions at the same time. This means that we can easily ensure that our applications work in ruby 1.8.X, ree, 1.9.1, jruby, etc... and quickly expose areas in which they do not.
Gem Management
RVM has an extremely flexible gem management system called Named Gem Sets. RVM's gems(ets) make managing gems across multiple versions of ruby a non issue. RVM enables you to add a small text file to your application's repository instead of checking in tons of gems inflating your repository size needlessly. Additionally rvm's gem set management uses a common cache directory so as to only have one downloaded version of each gem on disk rather than several copies.
Security & Stability
Ruby processes are, in general, volatile. Either from memory bloat or due to included libraries(gems) containing unknown and (potentially) dangerous code. Thus processes started *as root* have a higher probability of compromising both the stability and security of a system.
RVM helps ensure that all aspects of ruby are completely contained within user space, strongly encouraging non-root usage. Use of RVM rubies provide a higher level of system security and therefore reduce risk and overall system downtime. Additionally, since all processes run as the user, a compromised ruby process will not be able to compromise the entire system.
Support
RVM is continuously evolving thanks to constant community feedback. The lead developer of RVM (Wayne E. Seguin) is highly responsive, addresses issues quickly and cares about helping the ruby community grow.