Subscribe to NotarySojac's debian career        RSS Feed

Day 6 - Installing Rails, gem, rvm, etc.

Icon Leave Comment
This post is a part of a mini-series!
Day 6
1) Installing (You Are Here)
2) Test a Rails App!  link
3) Configuring Webserver  link
4) Configuring MySql link

:: Installing Ruby

Install prerequisites so we can use curl and download rvm (Ruby Version Manager).
$  apt-get update

$  apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf nodejs

Troubleshooting (nodejs isn't in the default repository list on debian stable):

Download and install rvm (not using apt-get obviously)
$  bash -s stable < <(curl -s

Then, sort of put rvm into the environment PATH (this won't work if you used 'su', and rvm may only be available if you're logged in through SSH. You also need to log out and log back in...)

(Run the below code as the desired user and it will put stuff at the bottom of ~/.bashrc)
$  echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc 

(Run as root and it should end up in /root/.bashrc)
$  echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc 

Then you could try to run this command or if that doesn't work, restart your ssh session (I don't get linux...)
$  . ~/.bashrc

If your installation is successful, typing $ rvm will yield a result.

One more configuration is needed for rvm to work properly:
$  rvm pkg install zlib

Now install a few versions of ruby:
$  rvm install 1.8.7
$  rvm install 1.9.2

Weeks later, update rvm and ruby 1.9.2 to the latest patch!
$  rvm get latest   # this will update rvm itself
$  rvm reload
$  rvm install 1.9.2  

Switch to using a specific version of ruby, and set the default version to be used at login (necessary).
$  rvm use 1.9.2
$  rvm --default use 1.9.2


Sometimes you'll have instances where 1.9.2 will be incompatible with some rails thing you're trying to do. In that case, switch your ruby version down to 1.8.7.
$  rvm --default use 1.8.7

Getting RVM working in x11(linux GUI)

:: Installing Gem and Gemsets

When we installed ruby through rvm, it automatically installed gem for us (version 1.6.2 for me). Check this site out for details on gemsets and using rvm to manage gem. https://rvm.beginres...gemsets/basics/

This rvm program is so cool that it lets us have many, compartmentalized 'gemsets' for each ruby version you have installed. Let's create an alternative gemset for ruby 1.8.7 (which we're already set to because our last version change command was rvm --default use 1.8.7

$  rvm gemset create testrails2.3.5
$  rvm [email protected]
$  rvm gemset list

$  rvm gemset list
$  rvm gemset list_all

Now if we really wanted to, we could install rails version 2.3.5 and test it here inside 1.8.7, while still having the latest version of rails in the head 1.9.2 version with out any confusion over which rails app will be used. Let's switch back to the main 1.9.2 version since we don't want to do anything with gems yet.
$  rvm 1.9.2

Here's an interesting trick where you put a .rvmrc file in some directory and it will automatically setup your rvm to be using the version you specified.
$  echo "rvm 1.9.2" > APPNAME/.rvmrc

To update gem using rvm:
$  rvm rubygems 1.8.5

For me, it gave me a dumb warning and so I had to run the command a second time...

For a standalone installation of gem, you'd see this command, but usually you can get away with using rvm to update it for you:
$  gem update --system

You can downgrade too, if gems are giving you tons of warnings and not working:
$  gem update --system 1.7.2

:: Installing Rails

Apparently, if you use apt-get to install gem, the name of gem changes depending on what version it is atm... Luckily this new procedure I wrote avoids this problem.
$  gem install rails --include-dependencies
INFO:  `gem install -y` is now default and will be removed
INFO:  use --ignore-dependencies to install only the gems you list
<randomly hit enter once?>
<randomly hit enter again>
<randomly hit enter again?>
<wait a long time for it to start updating you with progress reports on its downloads...>

OK, this step is weird. If you're lucky, it will work. If you're unlucky, you'll need to try it again. Don't ask me how. Just try again if it doesn't do anything for half an hour or something... My test machine sux.

Also, what if you want to install another version of rails in addition to the latest and greatest?
$  gem install rails -v=2.3.5

Easy enough.

:: More About NodeJS (required for rails 3.2 and up)

Rails is apparently asking me to install a javascript runtime. I had read about them a while ago, and it's basically a way of letting you execute javascript as though it were any other language like ruby or C++ without going through a web browser. I know, it totally weirded me out when I first heard about it because to me (due mostly to the environments I run it on) javascript is the sloppy language you use because it's the only thing available. I guess that sentiment isn't felt in the rest of the community so maybe I will look into it more.

An alternative method of installation (we already installed it up at the top, so you don't need to install it again):


:: Configure MySQL with rails
Since we already installed MySql in a prior entry, we just need to install the mysql adapter gems.
(When I found a reference, it said do libmysqlclient14-dev, but it was out of date by 1 I guess...)
$  apt-get install libmysqlclient15-dev   
$  gem install mysql
$  gem install mysql2      ~~that might be important too...

(ref (borrowed a single command): http://daniel.lorch....nstall_debian/)

$  cd /var/rails
$  rails new myapp

zomg, we did it! We can even test it out on WEBrick, the built in server!

$  cd myapp
$  rails server


Want to make webrick faster?

ref: http://kevin.vanzonn...n_ubuntu_lucid/
(you might need some of this still too. Some we installed previously, but w/e.)
$  apt-get install -y libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby
$  gem install sqlite3

Let's close this entry up with a hello world in ruby on the command line (this is not 'rails' it's just ruby).
(vi hello.rb)
# this is a super cool hello world example
puts "hello world"
puts "!" * 5
puts 1 
puts "!" * 3

to run that ruby script, type
$  ruby hello.rb

You may go to the next entry on rails if you'd like.

0 Comments On This Entry


Trackbacks for this entry [ Trackback URL ]

There are no Trackbacks for this entry