« Ruby on rails » : différence entre les versions

De wiki jackbot
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
mAucun résumé des modifications
Ligne 111 : Ligne 111 :


On peut voir ici qu'en nommant un modèle "ArticleTest", donc en respectant la convention d'écrire tout attaché, mais avec une majuscule au début de chaque mot. Rails va être capable de créer la table : "article_tests" donc tout en minuscule, les mots séparés par '_' et au pluriel.
On peut voir ici qu'en nommant un modèle "ArticleTest", donc en respectant la convention d'écrire tout attaché, mais avec une majuscule au début de chaque mot. Rails va être capable de créer la table : "article_tests" donc tout en minuscule, les mots séparés par '_' et au pluriel.
<h3>Jouer avec les modèles</h3>
Il est tout à fait possible de tester les modèles crées sans modifier l'application, pour ce faire il faut utiliser la console rails avec la commande :
<pre style="color: silver; background: black;">
$ rails console
</pre>
Pour créer un nouvel article, mais sans pour autant le sauvegarder dans la base de données il faut utiliser la méthode "new" :
<pre style="color: silver; background: black;">
article = Article.new(title: "Bonjour Rails", body: "Je suis sur rails!")
</pre>

Version du 6 novembre 2021 à 09:05

Ruby on rails est un framework web libre écrit en Ruby. Il est basé sur l'architecture Modèle-Vue-Contrôleur (MVC). Il a pour but de respecter deux principes fondamentaux de la programmation

  • DRY : Don't repeat yourself, ne vous répétez pas
  • Convention Over Configuration, Convention plutôt que configuration

Les générateurs

Ruby on Rails vient avec bon nombres de scripts appelé des générateurs, qui on pour but d'aider au développement en créant les fondations d'une nouvelle application Rails.

$ rails new blog

Va ainsi crée toute une arborescence :

$ tree -d -L 2
.
└── blog
    ├── app
    ├── bin
    ├── config
    ├── db
    ├── lib
    ├── log
    ├── node_modules
    ├── public
    ├── storage
    ├── test
    ├── tmp
    └── vendor
  • app contient les models, views, helpers, mailers, channels, jobs, et assets pour l'application.
  • bin contient les scripts permettant démarrer de l'application, ainsi que d'autres script pour définir, mettre à jour, déployer ou exécuter l'application.
  • config contient la configuration des routes, bases de données et autres.
  • db contient sans surprise la base de données, ainsi que les migrations.
  • lib contient les modules pour l'application.
  • log contient simplement les logs.
  • public contient des fichiers statiques ainsi que des ressources compilées. Quand l'application est lancée, ce dossier est exposé tel quel.
  • storage stockage actif de fichier.
  • test contient les tests unitaires
  • tmp contient des fichiers temporaires
  • vendor contient des gems externe

On y trouve également les fichiers suivant :

  • Gemfile qui permet de spécifier les dépendances
  • package.json qui permet de spécifier les dépendances vis à vis de npm

Test du serveur

Le coté pratique de RoR est que juste après avoir utilisé un générateur il est possible de démarrer le serveur avec la commande :

$ rails server

Vous pourrez voir le résultat à l'adresse http://localhost:3000 Il s'agit simplement d'une page visant à prouver que le serveur est lancé et RoR est opérationnel.

Notions MVC

L'architecture MVC (Modèle Vue Contrôleur), permet de cloisonner correctement les différentes tâches.

Modèle

Les modèles sont des classes écrite en Ruby utilisées pour représenter les données et possiblement interagir avec la base de données au travers de : "Active Record"

Pour créer un modèle la commande est la suivante :

$ rails generate model Article title:string body:text
Running via Spring preloader in process 21517
      invoke  active_record
      create    db/migrate/20211105132513_create_articles.rb
      create    app/models/article.rb
      invoke    test_unit
      create      test/models/article_test.rb
      create      test/fixtures/articles.yml

Vous pouvez voir que cette commande à créé de nombreux fichiers

  • 20211105132513_create_articles.rb qui contient les modifications à apporter à la base de données
  • article.rb qui est le fichier contenant la classe en Ruby
  • article_test.rb les tests unitaires pour la classe
  • articles.yml (rôle inconnu ... pour l'instant)

La commande précédente se contente de créer les différents fichiers, mais sans modifier la base de données. Pour cela il faut exécuter la commande :

$ rails db:migrate
== 20211105132513 CreateArticles: migrating ===================================
-- create_table(:articles)
   -> 0.0020s
== 20211105132513 CreateArticles: migrated (0.0020s) ==========================

C'est ici que vont commencer à rentrer en jeu les conventions, car comme vous pouvez le voir, la table se nomme : "articles", donc en minuscule et au pluriel.

Conventions :

  • La convention de nommage sur les modèles est d'écrire tout attaché mais avec une majuscule pour la première lettre de chaque mot : "Table", "NouvelleTable"
  • Le nom des tables dans la base de données sera toujours en minuscule, les mots séparé par des '_' et au pluriel. Exemple : "tables", "nouvelle_tables"

Exemple :

$ rails generate model ArticleTest title:string body:text
Running via Spring preloader in process 8929
      invoke  active_record
      create    db/migrate/20211106075639_create_article_tests.rb
      create    app/models/article_test.rb
      invoke    test_unit
      create      test/models/article_test_test.rb
      create      test/fixtures/article_tests.yml

$ rails db:migrate
== 20211106075639 CreateArticleTests: migrating ===============================
-- create_table(:article_tests)
   -> 0.0022s
== 20211106075639 CreateArticleTests: migrated (0.0023s) ======================

On peut voir ici qu'en nommant un modèle "ArticleTest", donc en respectant la convention d'écrire tout attaché, mais avec une majuscule au début de chaque mot. Rails va être capable de créer la table : "article_tests" donc tout en minuscule, les mots séparés par '_' et au pluriel.

Jouer avec les modèles

Il est tout à fait possible de tester les modèles crées sans modifier l'application, pour ce faire il faut utiliser la console rails avec la commande :

$ rails console

Pour créer un nouvel article, mais sans pour autant le sauvegarder dans la base de données il faut utiliser la méthode "new" :

article = Article.new(title: "Bonjour Rails", body: "Je suis sur rails!")