Che cos’è lo scaffolding in Ruby on Rails?

Forse state imparando Rails &e avete letto che dovete creare uno “scaffold” per far partire la vostra applicazione Rails…

Facile!

Lo potete fare usando il comando rails g scaffold.

Ma cos’è l’impalcatura?

“L’impalcatura è una struttura temporanea usata per sostenere una squadra di lavoro per aiutare nella costruzione, manutenzione e riparazione di edifici, ponti e tutte le altre strutture artificiali.” – Wikipedia

Tradotto in Rails:

Un’impalcatura è un insieme di file generati automaticamente che forma la struttura di base di un progetto Rails.

Questi file includono:

  • Un controller
  • Un modello
  • Viste per ogni azione standard del controller (index, edit, show, new)

Un nuovo percorso.

E una migrazione per preparare il tuo database.

Vediamo un esempio!

Come usare il comando Rails Scaffold

Un esempio di impalcatura di un progetto per un sito web sui libri sarebbe come questo.

rails g scaffold books

Dovresti vedere un sacco di testo che scorre, che dettaglia i file che vengono creati.

Questo esempio crea:

  • A BooksController
  • Un modello Book
  • Un nuovo percorso resources :books aggiunto al tuo file config/routes.rb
  • Un insieme di file relativi ai test
  • Vedi i file sotto app/views/books (cinque in totale)

Sì.

C’è un sacco di roba.

Se vuoi annullare questa impalcatura, subito dopo averla creata, puoi usare il seguente comando.

rails d scaffold books

Dove “d” significa “distruggere”.

Tenete a mente che questo cancellerà i file creati dal processo di impalcatura.

Ora:

Prima di poter usare il tuo codice impaginato devi eseguire le tue migrazioni per aggiornare lo schema del tuo database.

Usa il comando rails db:migrate.

Se non appaiono messaggi di errore, sei pronto! Avete una struttura di base per la vostra nuova applicazione Rails, o per una nuova funzione che ha bisogno di un nuovo modello, viste & controller corrispondenti.

Prossimo:

Eseguite rails server.

Aprite il vostro browser a localhost:3000/books & dovreste essere in grado di vedere i risultati!

Rails Scaffolding Con Campi Extra

Di default…

Il tuo modello ottiene solo campi timestamp, il che significa che le uniche informazioni che puoi registrare sui tuoi libri (o qualsiasi modello con cui stai lavorando) è il tempo in cui sono stati creati o aggiornati.

Ecco come impalcatura con campi extra:

rails g scaffold books title:string author:string publication_year:integer

Se generate la vostra impalcatura in questo modo, avrete 3 campi con cui lavorare.

Un titolo, un autore e un anno di pubblicazione.

Questo è un po’ più interessante che avere solo i timestamp del database.

Btw.

Questa è la stessa sintassi che usiamo per creare migrazioni con rails g migration.

Generazione di componenti specifici

Lo scaffolding crea cose di cui potreste non aver bisogno o che volete in questo momento.

Ma Rails è bello.

Puoi creare componenti individuali, come i controller, usando il comando rails g (g per generare).

Esempi:

  • rails g controller Fruit
  • rails g model Fruit name:string color:string (crea modello + migrazione)
  • rails g migration CreateBook title:string year:integer (crea solo la migrazione)

Uno dei grandi vantaggi di usare un comando scaffolding è che tutti i file vengono creati usando le corrette convenzioni di denominazione, il che evita strani messaggi di errore. Ti risparmia anche il lavoro di dover creare manualmente questi file.

Btw…

È considerata una buona pratica cancellare i file generati automaticamente che non hai intenzione di usare. Quindi, dopo aver usato un generatore come “g controller”, rivedete la lista dei file creati &rimuovete quelli che non vi servono.

Sommario

Hai imparato a conoscere lo scaffolding in Ruby in modo da poter avviare rapidamente una nuova applicazione Rails con cui fare pratica.

Con l’aumentare delle tue conoscenze potresti voler lasciar perdere lo scaffolding.

Ma puoi ancora generare singoli controller, modelli o file di vista quando ne hai bisogno.

Grazie per aver letto! 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.