Rubis sur Rails est un merveilleux framework d'application Web open source full-stack privilégiant la convention plutôt que la configuration.
Grâce à des composants réutilisables et facilement configurables normalement utilisés pour la création d'applications, la création d'applications dans Rails est plus rapide et plus facile, ce qui entraîne une amélioration de la productivité et de la croissance de l'entreprise.
Il gagne du terrain auprès des développeurs car il est flexible, évolutif et facile à écrire et à maintenir pour les développeurs Web.
Rubis sur Rails met l'accent sur l'utilisation de modèles et de principes d'ingénierie connus afin de réduire la charge de travail lors de la création d'applications Web.
Même s'il existe plusieurs méthodes pour résoudre un défi de programmation, Ruby prétend s'appuyer sur des modèles couramment utilisés, ce qui facilite la maintenance et la mise à niveau des sites Web Rails.
Les bibliothèques open source avec des blocs plus petits de code Rails résolvant des problèmes particuliers sont couramment utilisées pour réduire les frais de développement.
Avec l'aide de tels blocs de code, les développeurs peuvent insérer des gemmes stables et bien testées au lieu de passer du temps à écrire les mêmes types de codes. L'un des outils les plus puissants de la boîte à outils d'un programmeur Ruby est le module.
Les modules fournissent une structure pour collecter les classes, méthodes et constantes Ruby en une seule unité, nommée et définie séparément.
Ceci est utile pour éviter les conflits avec les classes, méthodes et constantes existantes, et également pour pouvoir ajouter (mélanger) les fonctionnalités des modules dans vos classes.
Création d'un module : l'écriture d'un module est similaire à l'écriture d'une classe, sauf que vous commencez votre définition avec le mot-clé module au lieu du mot-clé class.
module MonPremierModule
vraiment, dis_bonjour
met "Bonjour"
fin
fin
Comme nous ne pouvons pas instancier le module, pour utiliser le module, nous devons étendre et inclure le module dans une classe.
include : mélange les méthodes de module spécifiées en tant que méthodes d'instance dans la classe cible
extend : mélange les méthodes de module spécifiées en tant que méthodes de classe dans la classe cible
module RéutilisableModule
def module_method
met « Méthode du module : Salut ! »
fin
fin
classe ClassThatIncludes
inclure le module réutilisable
fin
classe ClassThatExtends
étendre le module réutilisable
fin
met "Inclure"
ClassThatIncludes.new.module_method # « Méthode du module : bonjour ! »
met « Étendre »
ClassThatExtends.module_method # « Méthode du module : bonjour ! »
============================================================
Autre point sur le module en Ruby :
1 : ) Illustrant les bases de la recherche de méthode :
moduleM
rapport définitif
place la « méthode 'report' dans le module M »
fin
fin
classe C
inclure M
fin
classe D < C
fin
obj = D.nouveau
obj.rapport
Sortir:
#=> méthode 'report' dans le module M
Workflow : supposons que je sois un objet Ruby et que j'ai reçu le message « rapport ». Je dois essayer de trouver une méthode appelée report dans ma méthode
chemin de recherche. le rapport, s’il existe, réside dans une classe ou un module.
Je suis une instance d'une classe appelée D. D définit-il un rapport de méthode d'instance ?
Non.
Est-ce que D se mélange dans des modules ?
Non.
La superclasse de D, C, définit-elle une méthode d'instance de rapport ?
Non.
Est-ce que C se mélange dans des modules ?
Oui : M.
M définit-il une méthode de rapport ?
Oui.
Bien! Je vais exécuter cette méthode.
2 :) Définir la même méthode plusieurs fois :
Si vous définissez deux fois une méthode dans la même classe, la deuxième définition est prioritaire sur la première. Il en va de même pour les modules.
module Porteur d'Intérêt
def calculer_intérêt
met « Espace réservé ! Nous sommes dans le module InterestBearing.
fin
fin
classe CompteBanque
inclure les intérêts
def calculer_intérêt
met « Espace réservé ! Nous sommes en classe Compte bancaire.
met "Et nous remplaçons la méthode calculate_interest!"
fin
fin
compte = CompteBanque.nouveau
compte.calculate_interest
Sortir:
#=>Espace réservé ! Nous sommes en classe Compte Bancaire.
#=>Et nous remplaçons la méthode calculate_interest !
3 :) Mixage en deux modules avec une méthode du même nom définie :
moduleM
rapport définitif
place la « méthode 'report' dans le module M »
fin
fin
module N
rapport définitif
place la « méthode 'report' dans le module N »
fin
fin
classe C
inclure M
inclure N
fin
c = C.nouveau
c. rapport
Sortir:
#=> méthode rapport' dans le module N
4 :) Inclure un module plus d'une fois
classe C
inclure M
inclure N
inclure M
fin
c = C.nouveau
c. rapport
#=> méthode rapport' dans le module N
Flux de travail :
Vous pourriez vous attendre à ce que lorsque vous exécutez la méthode report, vous obteniez la version de M, car M était le module inclus le plus récemment.
Mais réinclure un module ne fait rien. Étant donné que M se trouve déjà sur le chemin de recherche, la deuxième instruction d'inclusion de M n'a aucun effet. N est toujours considéré comme le module inclus le plus récemment :
5 :) Remonter le chemin de recherche de méthode avec super : dans le corps d'une définition de méthode, vous pouvez utiliser le mot-clé super pour passer à la définition la plus élevée, dans le chemin de recherche de méthode, de la méthode que vous utilisez actuellement. exécution.
moduleM
rapport définitif
place la « méthode 'report' dans le module M »
fin
fin
classe C
inclure M
rapport définitif
place la « méthode 'report' en classe C »
indique « Sur le point de déclencher la prochaine méthode de rapport supérieure… »
super
met "Retour du 'super' appel."
fin
fin
B
C
D
c = C.nouveau
c. rapport
#=> méthode 'report' en classe C
Sur le point de déclencher la prochaine méthode de rapport supérieure…
Méthode 'report' dans le module M Retour de l'appel 'super'.
RailsCarma travaille sur RoR depuis ses débuts et avec une solide main-d'œuvre formée en RoR, il est devenu un nom hautement fiable dans le conseil, l'architecture, la construction, la gestion et l'extension Ruby on Rails de bout en bout aux entreprises du monde entier.
En savoir plus :