Sudhindra Rao
Sudhindra Rao

Reputation: 33

How can I use two different ruby installations for same project with rvm and rvmrc files?

I have a an app that runs and is installed on JRuby in production. The same app can run in Ruby 1.8.7 as well in development. How can I use RVM to switch between these rubie?

I am looking for a .rvmrc-like solution so that I can say

rvm use .rvmrc_ruby

or

rvm use .rvmrc_jruby 

to switch between Ruby versions. I usually need to do this to test the same app on both Ruby and JRuby.

I would like a solution where I can check-in such settings to Git and run these things without having to type the Ruby versions or gemset names everytime I need to switch.

Upvotes: 3

Views: 122

Answers (2)

mpapis
mpapis

Reputation: 53158

generate those two files and in .rvmrc write:

source ./.rvmrc_${TEST_WITH:-jruby}

then you can write in your shell:

export TEST_WITH=ruby
cd .

and restore with:

unset TEST_WITH
cd .

Upvotes: 1

Andrew Marshall
Andrew Marshall

Reputation: 96934

This seems silly.

First, why are you even bothering to run a different Ruby in development? If this is for the occasional test run to ensure compatibility across different Rubies, then okay, but then…

Second, all you probably have in your .rvmrc is rvm use 1.8.7 or rvm use jruby—that is all that happens when your .rvmrc file runs. What's so bad about just actually typing that out into the terminal? It's actually less characters than the example commands you gave, and you get tab-completion too. If you need consistency across shells and actually have to have the .rvmrc reflect the current Ruby you want, then just change the file. Or, if you really must, write a simple script to do it for you (say it's called changervmrc.sh):

#!/bin/bash

echo "rvm use $1" > .rvmrc

and invoke with ./changervmrc.sh jruby. You could adapt this to include switching to a specific gemset if needed.

Upvotes: 0

Related Questions