Les bases de la création et de l'utilisation de modules dans Rails

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 : 

Implémentation de TinyMCE dans Ruby on Rails
Comprendre le plugin Asset Pipeline
Associations polymorphes avec enregistrement actif
Un moyen simple d'augmenter les performances de votre application Rails

Prenez contact avec nous.

Abonnez-vous pour les dernières mises à jour

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench