Il comando si ricollega a una sessione (se esiste già), altrimenti ne crea una nuova.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm -v nvm install 21.5.0
cd /home/$USER git clone https://github.com/rbenv/rbenv.git /home/$USER/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> /home/$USER/.bashrc echo 'eval "$(rbenv init -)"' >> /home/$USER/.bashrc exec $SHELL git clone https://github.com/rbenv/ruby-build.git /home/$USER/.rbenv/plugins/ruby-build echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> /home/$USER/.bashrc exec $SHELL
Nei passaggi successivi, se serve aggiornare ruby-build (la versione cercata non è disponibile) rbenv proporrà di farlo con questo comando:git -C /home/NOMEUTENTE/.rbenv/plugins/ruby-build pull
rbenv install 3.3.0 rbenv global 3.3.0 rbenv local 3.3.0 rbenv rehash git config --global color.ui true gem install rails -v 7.0.8 rbenv rehash ruby -v rails -v echo --- Installazione terminata ---
todo: rails 7.1.2 dava un problema con la configurazione del database
Ci vorrà un po' di tempo.
Controlla l'output dei singoli comandi e vedi se compare qualche errore.
gem update bundler
rails _7.0.8_ new nome_della_tua_applicazione --css=bootstrap --javascript=esbuild --database=postgresql --force
Ricordati di cambiare il nome facendolo corrispondere a quello della tua cartella.
Nota che rails si occuperà di installare per te anche Bootstrap.
Avvertenza
Per semplificare la clonazione dell'applicazione non fare commit prima di aver eseguito le istruzioni .gitignore che trovi in fondo alla pagina
Schema
Ricordi? Gli schema sono come cartelle all'interno del tuo database.
\q
Verifica che il file package.json contenga un oggetto scripts simile al seguente... in caso contrario aggiungi le righe mancanti:{ "name": "app", "private": "true", "dependencies": { "@hotwired/stimulus": "^3.2.2", "@hotwired/turbo-rails": "^8.0.0-beta.2", "@popperjs/core": "^2.11.8", "autoprefixer": "^10.4.16", "bootstrap": "^5.3.2", "bootstrap-icons": "^1.11.2", "esbuild": "^0.19.10", "nodemon": "^3.0.2", "postcss": "^8.4.32", "postcss-cli": "^11.0.0", "sass": "^1.69.5" }, "scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=/assets", "build:css:compile": "sass ./app/assets/stylesheets/application.bootstrap.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules", "build:css:prefix": "postcss ./app/assets/builds/application.css --use=autoprefixer --output=./app/assets/builds/application.css", "build:css": "yarn build:css:compile && yarn build:css:prefix", "watch:css": "nodemon --watch ./app/assets/stylesheets/ --ext scss --exec \"yarn build:css\"" }, "browserslist": [ "defaults" ] }
/config/database.yml /Procfile.dev
In questo modo ognuno potrà mantenere la sua propria copia di questi file di configurazione.
/config/database.yml.dist /Procfile.dev.dist
Ricordati di cancellare eventuali password dalla copia che sarà distribuita.
/config/database.yml /Procfile.yml
Avvertenza
Non usare il segno - nel nome degli schema: non sarà accettato.
Per lo stesso motivo usa il segno _ solo per aggiungere il suffisso _test al secondo schema.
bin/setup bundle install yarn install
Vengono creati:
- un file per il controller (app/controllers/home_controller.rb)
- una cartella per le sue viste (app/views/home)
Come funziona la rotta
Quando l'utente richiede la pagina /home
la sua richiesta viene inoltrata a home#index (controller home, azione index)
Puoi usare
home_path: genera un link relativo del tipo "/home"
home_url: genera un link assoluto del tipo "https://localhost:3058/home"
File pubblici
Rails è progettato per creare applicazioni sicure, quindi normalmente tutti i file con il codice sorgente non sono visibili all'utente.
Esiste però una cartella /public che sarà completamente visibile agli utenti, e può essere utile per contenere immagini o documenti da far scaricare all'utente.
Per trasferire dei file nel server remoto via SSH è sufficiente trascinarli dal tuo desktop alla cartella di destinazione su Visual Studio Code.
Bootstrap
Avendo creato l'applicazione con l'opzione --css=bootstrap potrai usare senza fatica tutte le classi definite da Bootstrap!
Nota: il nome dei partial inizia sempre col simbolo _
Nota: quando il partial viene richiamato non serve mettere il simbolo _ e neanche l'estensione del file.
Inoltre se si fa uso di un partial che è nella stessa cartella della vista che lo richiama, non serve neanche specificare un percorso.
Dobbiamo specificare che i partial sono nella cartella layouts perché dovendo apparire in tutte le pagine saranno richiamati da diversi controller, come ad esempio Home. Se non specificassimo la cartella, rails andrebbe a cercare il partial in views/home/navbar.
Nota: una pagina può contenere più container anche di tipi diversi... ad esempio uno fluido per il carousel, uno per le card con i prodotti, e così via.
Inoltre puoi usare tutto quello che conosci della griglia di Bootstrap per disegnare layout con più colonne:
Il Model è un oggetto ruby che rappresenta un certo tipo di dati memorizzati nel database... potremmo ad esempio avere un model per le schede dei clienti, uno per i prodotti, uno per gli acquisti...
In questo modo potremo lavorare con i dati memorizzati nel database scrivendo in linguaggio Ruby, e non direttamente in SQL. Il vantaggio è che se un giorno vorremo cambiare tipo di database (salvando ad esempio i dati nel cloud AWS di Amazon) non avremo bisogno di modificare la nostra applicazione.
Le migrazioni
Le migrazioni sono modifiche alla struttura del database: il loro nome contiene la data e l'ora in cui sono state create. Esse vengono poi applicate in ordine ai vari server contenenti i database... in questo modo se un'applicazione è distribuita sarà sempre possibile fare in modo ordinato gli aggiornamenti.
Rollback
È anche possibile fare delle operazioni di rollback, e cioè di annullamento di una certa migrazione, con il comando:rails db:rollback
rails c
quit
Variabili d'istanza
In Ruby le variabili precedute da una @ sono dette variabili d'istanza, e Rails le usa per rendere disponibili alle viste le variabili definite nel controller.
Nota come il numero di like viene scritto da un frammento di codice Ruby che legge la variabile @like definita nel controller.
Nota: mettere questa nuova azione nel controller Home non sarebbe la scelta migliore se volessimo contare i like di tutta l'applicazione, ma per ora non complichiamo le cose.
Oltre ai parametri espliciti definiti nelle rotte, è possibile passare dei parametri aggiuntivi... ad esempio:
genera un link di questo tipo:http://127.0.0.1:3058/click/home?tema=scuro
e il valore del tema può essere letto dal controller scrivendo semplicemente params[:tema]
psql
ALTER USER "a.ros" ENCRYPTED PASSWORD '12345';
NAT della porta
La traslazione della porta da 5432 a 5433 normalmente non è necessaria, a meno che tu non abbia un server PostgreSQL anche sulla tua macchina di sviluppo.
Non serve quindi che tu modifichi le impostazioni avanzate.
Con DBeaver oltre a visualizzare i dati presenti nel tuo database, puoi anche modificarli a tuo piacere!
Avendo un lungo elenco di prodotti ad esempio, potresti trovarti meglio a fare delle modifiche sulla tabella di DBaver piuttosto che aprendo le singole schede dei prodotti dall'applicazione.
Avviso salvaesame
Dedica tutto il tempo che serve a ricontrollare questo comando e a ripensare se hai inserito tutti i campi che ti servono, perché una volta avviato Rails procederà a creare tutta una serie di file che sarà difficile poi modificare manualmente.
Nel caso volessi eliminare lo scaffold appena creato, puoi farlo con il comandorails destroy scaffold Book
rails active_storage:install
rails db:migrate
Dato che il partial _book viene usato sia da index che da show, assegnamo all'immagine la classe w-100 di Bootstrap che estenderà l'immagine all'intera larghezza del suo contenitore (ad esempio una colonna o una card nell'indice), limitandola però a un massimo di 300 pixel con l'attributo style, in modo che quando essa viene visualizzata nella vista show non si allarghi troppo.
bundle install
rails g devise:install
Ricordati di cambiare nell'esempio qui sopra il numero di porta.
rails g devise User
rails db:migrate
rails g scaffold_controller User email:string admin:boolean
Le rotte generate da devise_for :users devono apparire prima di quelle generate dallo scaffold (resources :users), o si verificherà un problema richiedendo l'autenticazione per il controller Users:
rails g devise:views
Nota che visualizziamo il benvenuto solo se l'utente è loggato (user_signed_in).