How to Install Ruby on Rails (RoR) with PostgreSQL on Ubuntu 16.04
This tutorial exists for these OS versions
- Ubuntu 18.04 (Bionic Beaver)
- Ubuntu 16.04 (Xenial Xerus)
On this page
Ruby on Rails (RoR) is an open source web application framework, published under MIT License. Ruby on Rails, or rails is written in Ruby, it is a server-side web application framework that follows the MVC (Model-View-Controller) concept. Rails is providing default structures for the database, web service, and web pages. More than 3000 developers have been contributed code to the Rails framework and there are many well-known applications based on Rails, such as Github, Airbnb, Soundcloud etc.
In this tutorial, I will show you how to install Ruby on Rails on ubuntu 16.04 LTS. I will show you how to install and configure Rails with a PostgreSQL database, and how to create a new first project with Rails.
- Ubuntu 16.04 Server.
- Root privileges.
Step 1 - Install RVM
RVM or Ruby Version Manager is a command-line tool based on Bash and Ruby to manage the ruby installation. RVM allows you to install and configure multiple ruby versions on one system.
In this step, we will install the stable RVM version and add the repository key with the gpg command.
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
Install RVM stable. Make sure curl command is installed on your system.
curl -sSL https://get.rvm.io | bash -s stable --ruby
That command will install the requires packages for the RVM installation, then download the latest stable RVM version and install it.
Now we can start using RVM by executing the command below at the first:
Step 2 - Install Ruby
The current stable version of Ruby is 2.3.1. Install it with the rvm command and then make it the default ruby version for your system.
Update rvm to the latest stable version, then install Ruby 2.3.1 version.
rvm get stable --autolibs=enable
rvm install ruby-2.3.1
Next, make 2.3.1 the default ruby version on the system.
rvm --default use ruby-2.3.1
Now check the ruby version with command below:
Step 3 - Install Nodejs
Install nodejs from the nodesource repository:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
apt-get install -y nodejs
Step 4 - Configure Ruby Gem
RubyGems is a Ruby Package Manager. It's coming with the gem command-line tool and is automatically installed when we install Ruby on the system.
Update the gem version and check it:
gem update --system
This is optional, you can disable to install the documentation on every gem installation by adding a new line to the .gemrc file below.
echo "gem: --no-document" >> ~/.gemrc
Step 5 - Install Ruby on Rails 5 Stable
Install Ruby on Rails 5 with the gem command below:
gem install rails -v 5.0.0
When the installation finished successfully, check the rails version:
And you will see the results of rails version:
Rails 5.0 has been installed on Ubuntu 16.04 with Ruby 2.3.1.
Step 6 - Setting up the PostgreSQL Database for Rails Development
In this step, we will prepare PostgreSQL for rails development. Ruby on Rails supports many databases such as MySQL, SQLite (Default) and PostgreSQL. We will use PostgreSQL as the database for this guide.
Install PostgreSQL and some other required packages with the apt command:
apt-get -y install postgresql postgresql-contrib libpq-dev
When the installation is done, login to the postgres user and access the postgresql shell.
su - postgres
Give the postgres user a new password with command below:
Enter new password:
Next, create a new role named 'rails-dev' for the rails development with the command below:
create role rails_dev with createdb login password 'aqwe123';
Set a new password for the user and check that the user has been created.
Now check the new role and you will see new role has been created:
The PostgreSQL database has been prepared for the Rails Development.
Step 7 - Create the First Application with Rails and PostgreSQL
Ruby on Rails or Rails ships with the command "rails" and we can bootstrap our first application with that command.
Create a new application "myapp" with PostgreSQL as the default database.
rails new myapp -d postgresql
That command will create a new directory 'myapp' and install new gem including pg gem that is needed by rails to connect to the PostgreSQL database into that directory.
Next, go to the 'myapp' directory and edit the database.yml file in the config directory.
In the development section, uncomment line 32 and type the role we've created in step 6.
Set the rails_dev user password on line 35.
Uncomment line 40 and 44 for the database host configuration.
Now go to the test section and add the new configuration below:
Save and exit.
Next, generate the database with the rails command:
And then start the rails server with the command below:
rails s -b 192.168.1.110 -p 8080
Open your web browser and visit the server IP address on port 8080 - 192.168.1.110:8080.
Back to the terminal and create a new scaffold to interact with the PostgreSQL database.
Type the command below:
rails g scaffold Post title:string body:text
Run the rails server again.
rails s -b 192.168.1.110 -p 8080
Visit the server : 192.168.1.110:8080/posts
You will see simple CRUD on Ruby on Rails with PostgreSQL.