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:
- Un utente con privilegi sudo.
- NodeJS installato: Come installare Node.js e NPM su Ubuntu 20.04 LTS.
- Yarn installato: Come installare Yarn su Ubuntu 18.40 LTS.
- Ruby installato: Come installare Ruby on Rails con rbenv su Ubuntu 20.04 LTS.
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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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.