Installing Ruby on Rails on Ubuntu 10.04

I am really impressed with how Ubuntu 10.04 has resurrected an old computer of mine. The computer was running Windows XP and it was too slow to even start up. Now with Ubuntu 10.04 on it I can develop MySQL/Apache applications/servers with ease. As an experiment, I am going to see how this old computer handles running Ruby on Rails as well. This post describes how to install ruby on rails on a Ubuntu 10.04 server.

Open a terminal and enter the following command:

sudo apt-get install ruby-full build-essential

Install Apache

sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev

Install Mongrel

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
sudo apt-get install mongrel

I have never heard of Mongrel but this is was I have learned:

"Mongrel is a small library that provides a very fast HTTP 1.1 server for Ruby web applications. It is not particular to
any framework, and is intended to be just enough to get a web application running behind a more complete and robust web

What makes Mongrel so fast is the careful use of an Ragel extension to provide fast, accurate HTTP 1.1 protocol parsing. "

Install Ruby Gems

tar xzvf rubygems-1.3.7.tgz
cd rubygems-1.3.7
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system

Install Rails

sudo gem install rails\

For an IDE/Text Editor there are a lot of options. I am familiar with Eclipse so I am using http://aptana.com/downloads/start


c++ Unix time to string / string to Unix time

Unix time to string:

double doubleUnixTime = 1268974800;
string stringUnixTime;
time_t unixTime = doubleUnixTime ;
doubleUnixTime = asctime(gmtime(&unixTime));

Datetime String to unix time:
Datetime string in this format: yyyy-mm-dd hh:mm:ss

string stringDateTime = "2010-01-11 11:42:58";
struct tm *tmp = new tm;

time_t rawtime;
time ( &rawtime );
tmp = localtime ( &rawtime );

string year = stringDateTime.substr(0,4);
string month = stringDateTime.substr(5,2);
string day = stringDateTime.substr(8,2);
string hour = stringDateTime.substr(11,2);
string min = stringDateTime.substr(14,2);
string sec = stringDateTime.substr(17,2);

if(year != "0000")
tmp->tm_year = atoi(year.c_str()) - 1900;
tmp->tm_year = 0;

if(month != "00")
tmp->tm_mon = atoi(month.c_str()) - 1;
tmp->tm_mon = 0;

if(day != "00")
tmp->tm_mday = atoi(day.c_str());
tmp->tm_mday = 0;

tmp->tm_hour = atoi(hour.c_str());

tmp->tm_min = atoi(min.c_str());

tmp->tm_sec = atoi(sec.c_str());

rawtime = mktime(tmp);

int intRawtime = rawtime;


C++ logging file

This code will create a log file named --today's date--.log and append log messages to the file. Each log message has the current date and time before each message. To compile in linux use this command:

g++ -o example.out logExample.cpp


//logExample.h file

#include "stdio.h"
#include "stdlib.h"
using std::string;

class log_example

void printLog(std::string message);
void printLogError(std::string message);

void printDateTime();
FILE * pFile;



//logExample.cpp file
#include "log_example.h"

//create log file
char outstr[200];
time_t t;
struct tm *tmp;
t = time(NULL);
tmp = localtime(&t);
strftime(outstr, sizeof(outstr), "%F", tmp);
std::string logFile(outstr);
pFile = fopen (logFile.c_str(),"a");

printLog( "log_example constructor called");


printLog( "log_example destructor called");
fclose (pFile);

void log_example::printDateTime()
char outstr[200];
time_t t;
struct tm *tmp;
t = time(NULL);
tmp = localtime(&t);
fputs( "\n" ,pFile);
strftime(outstr, sizeof(outstr), "%F", tmp);
fputs( outstr, pFile);
fputs( " " ,pFile);
strftime(outstr, sizeof(outstr), "%T", tmp);
fputs( outstr, pFile);
fputs( " " ,pFile);


void log_example::printLog(std::string message)
fputs( message.c_str(),pFile);
fflush (pFile);


void log_example::printLogError(std::string message)
fputs( "ERROR: ",pFile);
fputs( message.c_str(),pFile);
fflush (pFile);