Setting up Ruby development setup with rbenv

I wanted to setup ruby source code on my machine. The source on Github has detailed instructions on how to do the setup.

git clone
cd ruby
make install

worked correctly on Mac OS X and Ruby was installed in usr/local/bin.

I use rbenv for managing Ruby versions. After setting up the Ruby from source, i wanted to use it using rbenv. Why? It will make very easy to switch between dev version and normal version. rbenv shell ruby-dev, do something, make some changes, compile again, test again. rbenv shell 2.1.2, and back to normal.

But as the source Ruby was installed in usr/local/bin, rbenv was not able to find it.

I asked question on #ruby on IRC and Postmodern pointed me to this.

It mentions passing --prefix option to the ./configure command. We can pass the name of directory where we want to install Ruby to this option.

So we can run

./configure --prefix=PATH_TO_INSTALL_RUBY

rbenv by default, installs all rubies in ~/.rbnev/versions

And when we do rbenv versions, it looks for all rubies installed in this directory and lists them.

The content of my ~/.rbnev/versions directory looked like these:

prathamesh ~/.rbenv/versions 2.0.0
$ ls
2.0.0-p247 2.0.0-p353 2.0.0-p481 2.1.0      2.1.1      2.1.2      rbx-2.2.6

prathamesh ~/.rbenv/versions 2.0.0

Now if we give prefix path to configure command, the dev-ruby will be installed in ~/.rbenv/versions

./configure --prefix="$HOME/.rbenv/versions/ruby-dev"

After make and make install, dev ruby was installed in~/.rbnenv/versions in ruby-dev directory.

Now rbenv versions output had ruby-dev also.

prathamesh ~/.rbenv/versions 2.0.0
$ rbenv versions
* system (set by /Users/prathamesh/.rbenv/version)

prathamesh ~/.rbenv/versions 2.0.0

As ruby-dev is listed by rbenv versions, i can switch to it easily:

rbenv shell ruby-dev


On Mac OS X Sierra, I had to also pass the flag for openssl directory while configuring.

cd ruby
make clean
./configure --prefix="$HOME/.rbenv/versions/ruby-dev" --with-opt-dir="/usr/local/opt/openssl/"
make install

This sets up Ruby dev version on my machine and also allows me to switch back and forth using rbenv.