In this Linux tutorial, you will learn how to install Ruby on Rails on Rocky Linux 9 or other Red Hat/CentOS based Linux distributions.
Table of Contents:
- What is Ruby on Rails?
- Ruby on Rails Architecture
- Environment Specification
- Prepare your Linux Server
- Installing Rails Prerequisites
- Installing Ruby on Rails
- Configure Linux Firewall
- Deploy a Ruby App
- Conclusion
What is Ruby on Rails?:
Ruby on Rails, commonly known as Rails, is an open-source web application framework written in Ruby. It was created by David Heinemeier Hansson and released in 2004, gaining popularity due to its simplicity and convention-over-configuration approach. Rails follows the Model-View-Controller (MVC) architectural pattern, which separates the application logic into three main components: the model, view, and controller.
Here's a brief overview of each component in Ruby on Rails:
Model:
The model represents the data and business logic of the application. It defines the structure and behavior of the data, including how it is stored, validated, and manipulated. Ruby on Rails uses an object-relational mapping (ORM) called ActiveRecord, which provides an abstraction layer for interacting with the database. With ActiveRecord, developers can define models as Ruby classes and perform database operations using simple methods and conventions.
View:
The view is responsible for presenting the application's user interface. In Rails, views are typically written using Embedded Ruby (ERb), which allows mixing Ruby code with HTML to generate dynamic content. Views display data to the user and handle user interactions by sending requests to the controller.
Controller:
The controller receives requests from the user, processes them, and determines the appropriate response. It acts as an intermediary between the model and the view, handling user input, performing business logic, and deciding which view to render. Controllers are implemented as Ruby classes, and they contain methods called actions, which are triggered by specific routes defined in the application.
Ruby on Rails Architecture:
Ruby on Rails promotes several conventions and principles that aim to enhance developer productivity and code maintainability:
a) Convention over Configuration:
Rails follows a "convention over configuration" approach, which means it provides sensible defaults and makes assumptions based on naming conventions. By following these conventions, developers can minimize the amount of configuration needed, allowing them to focus on writing application code.
b) DRY (Don't Repeat Yourself):
Rails emphasizes code reuse and reducing duplication. It provides features such as code generators and scaffolding to generate common code patterns automatically, making it easier to build applications quickly.
c) RESTful Architecture:
Rails encourages building applications that adhere to the principles of Representational State Transfer (REST). RESTful routing conventions make it easier to define and manage application routes and resources, providing a consistent and intuitive way to design APIs.
d) Gems and Plugins:
Ruby on Rails has a vibrant ecosystem of community-contributed libraries, called gems, which extend the framework's functionality. Developers can easily integrate gems into their applications, leveraging existing solutions for various tasks.
Ruby on Rails has been widely adopted by developers due to its productivity, community support, and ease of use. It has been used to build numerous high-profile websites and applications, showcasing its scalability and robustness.
Environment Specification:
We are using a minimal installed Rocky Linux 9 virtual machine with following specifications.
- CPU - 3.4 Ghz (2 cores)
- Memory - 4 GB
- Storage - 40 GB
- Operating System - Rocky Linux release 9.2 (Blue Onyx)
- Hostname - rails-01.centlinux.com
- IP Address - 192.168.116.133/24
Prepare your Linux Server:
By using a ssh client, login to your Rocky Linux server as root user.
Set a Fully Qualified Domain Name (FQDN) for your Linux server and configure Local DNS resolution thereon.
# hostnamectl set-hostname rails-01.centlinux.com # echo "192.168.116.133 rails-01 rails-01.centlinux.com" >> /etc/hosts
Execute dnf command to update software packages in your Linux OS.
# dnf update -y
Sometimes, the above command also installs a latest version of Linux Kernel on your operating system.
If this happens, then you should reboot your Linux server before installing Ruby on Rails software.
# reboot
Note down the versions of Linux OS and Kernel, that are being used in this tutorial.
# cat /etc/rocky-release Rocky Linux release 9.2 (Blue Onyx) # uname -r 5.14.0-284.11.1.el9_2.x86_64
Installing Rails Prerequisites:
Ruby 3.0 is available in standard yum repositories of Rocky Linux 9. Therefore, you can easily install it by using dnf command.
# dnf install -y ruby ruby-devel
After successful installation, check the version of ruby command.
# ruby --version
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]
Ruby on Rails requires SQLite database support. You can install any available version of SQLite from standard yum repositories.
# dnf install -y sqlite
After installation, check the version of SQLite database software.
# sqlite3 --version
3.34.1 2021-01-20 14:10:07 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ealt1
Some of the prerequisites are not available in standard yum repositories, therefore, you need to install Power Tools (CRB) and EPEL yum repositories.
Execute following commands to install EPEL and Power Tools (CRB) yum repositories.
# dnf install -y epel-release # /usr/bin/crb enable
Following prerequisites are required by Ruby on Rails software. You can install these prerequisites by using dnf command.
# dnf install -y gcc git zlib-devel readline readline-devel rubygem-psych openssl-devel libffi libffi-devel ncurses ncurses-devel libyaml libyaml-devel
Installing Ruby on Rails:
Rails software can be installed as a Ruby Gem with the help of gem command.
Execute following commands to update installed gems and install Rails on your Rocky Linux 9 machine.
# gem update # gem install rails
Verify Rails installation by querying the version with rails command.
# rails --version
Rails 7.0.5
Configure Linux Firewall:
Ruby on Rails server uses default service port 3000/tcp. Therefore, you need to allow port in Linux firewall.
Execute following command at Linux bash prompt to permanently allow service port 3000/tcp in Linux firewall.
# firewall-cmd --permanent --add-port=3000/tcp # firewall-cmd --reload
Deploy a Ruby App:
Running Ruby on Rails server as root user is not recommended. Therefore, you need to add a standard Linux user to deploy and run your Ruby applications.
Run following set of commands at Linux bash prompt to add a user and set necessary permissions on directories.
# adduser apps # chown -R apps.apps /usr/share/gems/ # chown -R apps.apps /usr/lib64/gems/ # chmod o+w /usr/bin
Switch to apps user by invoking su command.
# su - apps
Create a new Ruby App skeleton in /home/apps/blog directory.
$ cd $ rails new blog
Install all required gems, that are listed in /home/apps/blog/Gemfile file.
$ bundle install --gemfile /home/apps/blog/Gemfile
Start Rails server on all network interfaces.
$ cd ~/blog $ rails server -b 0.0.0.0 => Booting Puma => Rails 7.0.6 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma version: 5.6.6 (ruby 3.0.4-p208) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * PID: 2192 * Listening on http://0.0.0.0:3000 Use Ctrl-C to stop
Open URL http://rails-01.centlinux.com:3000 in a web browser.
You can now see the default homepage of your Ruby App.
Revoke following permissions from other users, because it is no longer required.
# chmod o-w /usr/bin
Conclusion:
In this Linux tutorial, you have learned how to install Ruby on Rails on Rocky Linux 9 or other Red Hat/CentOS based Linux distributions. To further explore your Rails server, we recommend that you should read Ruby on Rails Tutorial (Addison-Wesley Professional Ruby Series) by Michael Hartl. Or if you are a Ruby developer then you can attend The Complete Ruby on Rails Developer Course
No comments:
Post a Comment