Ubuntu 26.04

Ruby on Rails 8 : Install2026/06/16

 

Install Ruby on Rails 8 to build Ruby Framework environment.

[1]

Install Ruby, refer to here.

[2] Install some other required packages.
root@dlp:~#
apt -y install ruby-dev default-libmysqlclient-dev gcc make yarnpkg libxml2-16 libxml2-dev libxslt-dev libyaml-dev nodejs git
[3] Install Rails 8.
root@dlp:~#
gem install bundler

root@dlp:~#
gem install nokogiri -- --use-system-libraries

root@dlp:~#
gem install rails -N --version='~> 8.0, < 9.0'

root@dlp:~#
rails -v

Rails 8.1.3
[4] Create a sample application and make sure it works normally.
Install MariaDB Server for this sample app, refer to here.
# create database and user for sample application

root@dlp:~#
mariadb

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 11.8.6-MariaDB-5 from Ubuntu -- Please help get to 10k stars at https://github.com/MariaDB/Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database sample_app_test; 
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> create database sample_app_development; 
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> grant all privileges on sample_app_test.* to serverworld@'localhost' identified by 'password'; 
Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> grant all privileges on sample_app_development.* to serverworld@'localhost' identified by 'password'; 
Query OK, 0 rows affected (0.005 sec)

MariaDB [(none)]> exit
Bye

root@dlp:~#
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config

root@dlp:~#
rails new SampleApp -d mysql

root@dlp:~#
cd SampleApp

root@dlp:~/SampleApp#
vi config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: serverworld     # MariaDB connection user
  password: password        # MariaDB connection password
  socket: /var/run/mysqld/mysqld.sock

root@dlp:~/SampleApp#
vi config/application.rb
module SampleApp
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 7.1
    # line 13 : specify hosts
    # if not specified, users can access to only [localhost] and IP address
    # if allow all sub-domain, specify domain name like follows
    config.hosts << ".srv.world" 

# create sample application

root@dlp:~/SampleApp#
rails generate scaffold testapp name:string title:string body:text

root@dlp:~/SampleApp#
rails db:migrate

== 20260616042949 CreateTestapps: migrating ===================================
-- create_table(:testapps)
   -> 0.0099s
== 20260616042949 CreateTestapps: migrated (0.0104s) ==========================

root@dlp:~/SampleApp#
rails server --binding=0.0.0.0

=> Booting Puma
=> Rails 8.1.3 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 8.0.2 ("Into the Arena")
* Ruby version: ruby 3.3.8 (2025-04-09 revision b200bad6cd) [x86_64-linux-gnu]
*  Min threads: 3
*  Max threads: 3
*  Environment: development
*          PID: 25078
* Listening on http://0.0.0.0:3000
Use Ctrl-C to stop
[5] Access to the [http://(server's hostname or IP address):3000/] from a client computer. It's OK if following site is displayed normally.
  Access to [http://(server's hostname or IP address):3000/testapps], then it's possible to use sample app like follows.
Matched Content