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

puts “Hello”

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

puts “Module Method: Hi there!”

fin

fin

classe ClassThatIncludes

inclure le module réutilisable

fin

classe ClassThatExtends

étendre le module réutilisable

fin

puts “Include”

ClassThatIncludes.new.module_method # “Module Method: Hi there!”

puts “Extend”

ClassThatExtends.module_method # “Module Method: Hi there!”

============================================================

Autre point sur le module en Ruby :

1 : ) Illustrant les bases de la recherche de méthode :

moduleM

rapport définitif

puts “‘report’ method in module M”

fin

fin

classe C

inclure M

fin

classe D < C

fin

obj = D.nouveau

obj.rapport

Sortir:

#=> ‘report’ method in module M

Workflow: Suppose I am a Ruby object, and I’ve been sent the message “report”. I have to try to find a method called report in my method

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.

Does D’s superclass, C, define a report instance method?

Non.

Est-ce que C se mélange dans des modules ?

Oui : M.

M définit-il une méthode de rapport ?

Oui.

Good! I’ll execute that method.

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

puts “Placeholder! We’re in module InterestBearing.”

fin

fin

classe CompteBanque

inclure les intérêts

def calculer_intérêt

puts “Placeholder! We’re in class BankAccount.”

puts “And we’re overriding the calculate_interest method!”

fin

fin

compte = CompteBanque.nouveau

compte.calculate_interest

Sortir:

#=>Placeholder! We’re in class BankAccount.

#=>And we’re overriding the calculate_interest method!

3 :) Mixage en deux modules avec une méthode du même nom définie :

moduleM

rapport définitif

puts “‘report’ method in module M”

fin

fin

module N

rapport définitif

puts “‘report’ method in module N”

fin

fin

classe C

inclure M

inclure N

fin

c = C.nouveau

c. rapport

Sortir:

#=> report’ method in module N

4 :) Inclure un module plus d'une fois

classe C

inclure M

inclure N

inclure M

fin

c = C.nouveau

c. rapport

#=> report’ method in module N

Flux de travail :

You might expect that when you ran the report method, you’d get M’s version, because M was the most recently included module.

But re-including a module doesn’t do anything. Because M already lies on the search path, the second include M instruction has no effect. N is still considered the most recently included module:

5:) Going up the method search path with super: Inside the body of a method definition, you can use the super keyword to jump up to the next-highest definition, in the method-lookup path, of the method you’re currently executing.

moduleM

rapport définitif

puts “‘report’ method in module M”

fin

fin

classe C

inclure M

rapport définitif

puts “‘report’ method in class C”

puts “About to trigger the next higher-up report method…”

super

puts “Back from the ‘super’ call.”

fin

fin

B

C

D

c = C.nouveau

c. rapport

#=> ‘report’ method in class C

About to trigger the next higher-up report method…

‘report’ method in module M Back from the ‘super’ call.

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 *

French
English
English
Japanese
German
French
Spanish

WhatsApp nous

Quitter la version mobile