RVM it's an extremly usefull tool if you have to work with Ruby, different Ruby projects and specific Ruby Gemsets for your projects. RVM offers the solution for these needs by creating environments bound to a specific Ruby version and a set of Ruby Gems. This possibility avoids Gem version conflicts between your projects and also makes it easy to create test environments.
Now what we want is to bring this into our beloved Emacs. And here comes rvm.el along, an Emacs package by Yves Senn. The rvm.el package integrates Emacs with RVM and gives us a few nifty functions.
One of the great advantages which rvm.el brings is that packages like
mode-compile automatically benefit from it and use the
precise Ruby version.
Here's how to use it
First you have to install rvm.el; you get the source on Github.
Then you need to put the rvm.el somewhere in your
and add the following to your
;; Load rvm.el (require 'rvm) ;; use rvm’s default ruby for the current Emacs session (rvm-use-default)
Done, now you're ready to use rvm.el.
The first function you want to know is
this interactive function activates the corresponding Ruby version for
the file in the current buffer. What the function does is, to search
for an .rvmrc file and activate the selected Ruby version. If there
.rvmrc file, the default ruby will be used instead.
Maybe you want to switch manually to a specific Ruby version, then you
could use the
rvm-use function, which is also as an interactive
If you're working with Ruby on a daily basis and have to rummage through
different Gem source code from time to time, then you will definitely
need the interactive
rvm-open-gem function. This function gives you a
list of all the Gems which are installed for the currently activated
Ruby version and shows them in the minibuffer. Now you just have to decide
which one to open.
In addition to that, if you have Perspective installed,
open the chosen Gem directory in a new perspective, labeled with the
Gem's name. Now it's easy to switch back and forth between your project and
the Gem source.
rvm-autodetect-ruby will add a
ruby-mode-hook which will call
rvm-activate-corresponding-ruby to detect the Ruby version.
rvm-autodetect-ruby-stop is the vice-versa function, it will remove
ruby-mode-hook which calls the
rvm-use-default uses the rvm default configured Ruby as the
current Ruby version.
You can use rvm.el in your own Emacs scripts easily. Here an
rspec-mode uses it:
(defcustom rspec-use-rvm nil "t when RVM in is in use. (Requires rvm.el)" :type 'boolean :group 'rspec-mode)
And in the
rspec-compile function it uses the
rvm-activate-corresponding-ruby before it runs the specs.
The following example code is simplified.
(defun rspec-compile () ;; some code..... (if rspec-use-rvm (rvm-activate-corresponding-ruby)) ;; more code .. )
Rvm.el is a great package and if you're a Ruby programmer it will make your daily adventures with Ruby a lot more exciting.
The source code is available on the rvm.el repository on Github.blog comments powered by Disqus