Introduzione

Ruby on Rails (RoR) è un framework di applicazioni Web open source, pubblicato con licenza MIT. È un framework di applicazioni Web sul lato server che segue il concetto MVC (Model-View-Controller).

Rails fornisce strutture predefinite per il database, il servizio Web e le pagine Web. Più di 3000 sviluppatori hanno contribuito con il codice al framework Rails e ci sono molte applicazioni ben note basate su Rails, come Github, Airbnb, Soundcloud, ecc.

In questo tutorial, ti mostreremo come creare un progetto con Ruby on Rails su Ubuntu 20.04 LTS Focal Fossa.

Prerequisiti

Per questa guida, avrai bisogno di:

Se desideri creare un progetto con Ruby on Rails su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare e configurare PostgreSQL

Per questo tutorial, useremo PostgreSQL come database per il nostro progetto Rails. E in questo passaggio, installeremo il server di database PostgreSQL fornito dal repository ubuntu ufficiale.

Installa il server di database PostgreSQL su Ubuntu 20.04 usando il comando apt qui sotto.

sudo apt install postgresql postgresql-contrib libpq-dev -y

Una volta completata l'installazione, avvia il servizio PostgreSQL e aggiungilo all'avvio del sistema.

systemctl start postgresql
systemctl enable postgresql

Il servizio PostgreSQL è attivo e funzionante.

Quindi, accedi alla shell PostgreSQL e crea un nuovo ruolo "nov_role" con la password "nov_pass" e i privilegi "createdb" e "login".

sudo -i -u postgres psql
create role nov_role with createdb login password 'nov_pass';

Ora elenca tutti gli utenti disponibili su PostgreSQL usando la seguente query.

\du

E otterrai il ruolo "nov_role" sugli utenti dell'elenco PostgreSQL:

                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 nov_role  | Create DB                                                  | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Uscire dalla shell di PostgreSQL:

\q

Per maggiori informazioni su PostgreSQL leggere: Come installare PostgreSQL su Ubuntu 20.04 LTS.

Creare un progetto con Ruby on Rails

Per impostazione predefinita, Ruby on Rails utilizza SQLite come database predefinito. E per questa guida, inizieremo un nuovo progetto Rails usando il database PostgreSQL.

Crea un nuovo progetto 'nov_app' con il database predefinito PostgreSQL usando il seguente comando 'rails'.

rails new nov_app -d postgresql

Ora otterrai la directory del progetto 'nov_app', vai alla directory del progetto con il comando cd e modifica la configurazione del database 'config/database.yml' usando l'editor nano.

cd nov_app/
nano config/database.yml

Nella sezione development, aggiungi la configurazione del database come di seguito.

  host: localhost
  port: 5432
  username: nov_role
  password: nov_pass

Vai alla sezione testing e aggiungi la configurazione del database PostgreSQL come di seguito.

  host: localhost
  port: 5432
  username: nov_role
  password: nov_pass

Al termine, salvare e chiudere il file premendo CTRL+X quindi Y e ENTER per confermare le modifiche.

Quindi, esegui i comandi rails di seguito per generare e migrare il database per il nostro progetto Rails e assicurarti che non ci siano errori.

rails db:setup
rails db:migrate

Al termine dell'installazione, avviare il server Web puma rails predefinito utilizzando il comando seguente.

L'app verrà eseguito sul tuo indirizzo IP pubblico con la porta 8080:

=> Booting Puma
=> Rails 6.0.3.1 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:8081

Ora apri il browser web e digita il tuo indirizzo IP del server con la porta 8080 nella barra degli indirizzi: http://TUO_INDIRIZZO_IP:8080/

Otterrai la pagina index.html predefinita di Ruby on Rails.

Creare un semplice CRUD con Rails Scaffold

In questo passaggio, creeremo una nuova semplice applicazione CRUD utilizzando il database Ruby on Rails e PostgreSQL.

Genera la semplice applicazione CRUD usando il comando ruby ​​scaffold come di seguito:

rails g scaffold Post title:string body:text

Dovresti visualizzare un output simile al seguente:

Running via Spring preloader in process 1578
      invoke  active_record
      create    db/migrate/20200527145454_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml
      invoke  resource_route
       route    resources :posts
      invoke  scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    erb
      create      app/views/posts
      create      app/views/posts/index.html.erb
      create      app/views/posts/edit.html.erb
      create      app/views/posts/show.html.erb
      create      app/views/posts/new.html.erb
      create      app/views/posts/_form.html.erb
      invoke    test_unit
      create      test/controllers/posts_controller_test.rb
      create      test/system/posts_test.rb
      invoke    helper
      create      app/helpers/posts_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/posts/index.json.jbuilder
      create      app/views/posts/show.json.jbuilder
      create      app/views/posts/_post.json.jbuilder
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/posts.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss

Successivamente, migra il database usando il seguente comando.

rake db:migrate
== 20200527145454 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.0117s
== 20200527145454 CreatePosts: migrated (0.0120s) =============================

Assicurarsi che non vi siano errori, quindi eseguire nuovamente il server Puma.

rails s -b 0.0.0.0 -p 8080

Torna al tuo browser web e digita l'indirizzo IP del server con la porta 8080 aggiungendo il percorso '/posts': http://TUO_INDIRIZZO_IP:8080/posts

Adesso puoi creare, modificare e cancellare dei posts con la semplice applicazione CRUD e il database PostgreSQL utilizzando Rails Scaffold.

Conclusione

In questo tutorial abbiamo visto come creare un applicazione utilizzando Ruby on Rails e PostgreSQL su Ubuntu 20.04 LTS Focal Fossa.