How to Setup Ruby on Rails on Webhost

Posted in Tutorials

Tweet This Share on Facebook Bookmark on Delicious Digg this Submit to Reddit

In this tutorial, we are going to set up a Ruby on Rails application on our webhost at the subdomain http://firstruby.learnwebtutorials.com    First make sure that your webhost has an Ruby on Rails environment for which to run our app — not all hosts do.  Hostmonster and Bluehost both has it.  And we will be using Hostmonster in this example.

You will also need to have SSH shell access to your webhost account.  This may be something that you have to ask your webhost for.

1.  After logging into SSH shell, we can confirm that Ruby is up and running on our host by typing …

ruby -v

and it should return the version of Ruby running.  In our case, it is 1.8.7.

2.  Then type …

gem -v

This confirms that Ruby Gems package manager is also running.   Ruby on Rails is a Ruby Gem.

3.  Confirm that Rails is running by …

rails -v

Our version that is showing is Rails 2.3.11

4. If the version of Rails is 2.x, create a new Rails app by typing …

rails -d mysql ~/rails_apps/firstruby

If Rails 3.x, then type …

rails new -d mysql ~/rails_apps/firstruby

Ruby on Rails requires a database.  The -d mysql indicates to use a MySQL database.

The rails command creates a folder firstruby within the rails_apps folder that is on the user home directory.  firstruby will also be the name of the Ruby on Rails application.

Rails app folder created

The folder “public” that is inside the newly created “firstruby” folder is your rails application public folder.  This is where files of the application are placed for the public to access via the webserver.

Alternatively, on certain webhost you can create a Ruby application folder via the cPanel by clicking on “Ruby on Rails” service …

Ruby on Rails in CPanel

And then filling in the following …

Manage Ruby on Rails in CPanel

And click the green “Create” button.

5.  We have already created our subdomain http://firstruby.learnwebtutorials.com (see tutorial here) for which we intend to be the web address of our Ruby on Rails app.   The document root for this subdomain was already set up to be ~/public_html/firstruby

Here is what our current subdomain looks like …

firstruby subdomain

6.  Instead of this page referencing the the location at ~/public_html/firstruby, we want it to reference the Rails public folder that we had just created (which is ~/rails_apps/firstruby/public).  Since the Rails public folder is outside public_html, we have to create a symbolic link to it.

We want a symbolic link named at ~/public_html/firstruby to link to the real location at ~/rails_apps/firstruby/public

But we can not do this with a real directory ~/public_html/firstruby in place.

So we delete the ~/public_html/firstruby directory.  And then create the symbolic link with this command in the SSH shell…

ln -s ~/rails_apps/firstruby/public ~/public_html/firstruby

The ~/public_html/firstruby is our symbolic link.  It is not really there.   It is like an “alias” to the real location at ~/rails_apps/firstruby/public

7.  So when you browse in your browser to http://firstruby.learnwebtutorials.com   you are really looking at the Rails public folder.  And you should see the Ruby on Rails Welcome page …

Rails welcome page

That it.  The firstruby Ruby on Rails app is up.  From here, you would configure and code your Rails app.

To Delete a Rails App

To remove a Rails app, “unlink” the symbolic link.  And delete the folder from ~/rails_apps/firstruby

And then you may also want to remove the subdomain.