window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Ruby 3.0. Ruby et les méthodes moins connues de contrôle de la vie privée - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2021-01-28
Développement de logiciels

Ruby 3.0. Ruby et les méthodes moins connues de contrôle de la vie privée

The Codest

Tomasz Szkaradek

Architecte de développement

L'une des caractéristiques les plus appréciées de Ruby est sa syntaxe très flexible. Personnellement, j'aime Ruby pour les nombreuses possibilités qu'il offre dans la définition des classes et de leurs propriétés, et c'est ce dont je vais parler dans cet article.

Solutions de base

Supposons que nous utilisions la classe Foo qui possède une méthode publique et une méthode privée :

classe Foo
  def bar
    :awesome
  end

  privé

  def baz
    :something_private
  end
end

Tout va bien, nous voyons une telle solution dans pratiquement tous les pays de l'Union européenne. projet. Courir Foo.new.baz provoquera l'erreur NoMethodError (méthode privée 'baz' appelée pour # ) et c'est ce que nous voulions faire. Que se passe-t-il si nous essayons de modifier le format d'enregistrement et d'ajouter private comme préfixe dans la définition de la classe ?

classe Foo
  def bar
    :awesome
  end

  private def baz
    :something_private
  end
end

Comme vous pouvez le constater après avoir exécuté le codemais cela fonctionne réellement ! Pourquoi pouvons-nous saisir la visibilité de la méthode avant de l'exécuter ? Parce que lors de la définition d'une méthode, def renvoie le nom de la méthode sous forme de symbole. Cette expression n'est pas seulement une partie de la syntaxe, mais de facto une méthode dérivée de la classe Module et traitant ce symbole comme un argument. Pour plus d'informations, veuillez consulter la documentation dans ce lien. Puisque nous avons commencé si facilement avec private, essayons de changer la visibilité de la méthode private.

classe Foo
  def bar
    :awesome
  end

  private def baz
    :something_private
  end

  public :baz
end

Que se passera-t-il après l'exécution du code ?

irb(main):012:0> Foo.new.baz
=> :something_private

Succès ! Notre méthode de bases est devenue publique car nous l'avons rendue visible deux fois. Bien entendu, la même opération s'applique aux modules.
​
C'est très bien, mais où cela nous mène-t-il ?
​
Cette fonctionnalité nous apporte beaucoup car nous pouvons librement modifier la visibilité d'une méthode lors de sa définition, ou même modifier la visibilité des méthodes lors de leur héritage.

Voyons maintenant ce que Ruby 2.7 peut faire pour modifier la visibilité des alias et des accesseurs.

classe Foo
  private attr_accessor :awesome_variable
fin

Malheureusement, nous obtenons une erreur, car la méthode privée attend des symboles et attr_accessor. Le code renvoie nil et cette méthode n'est donc pas compatible avec l'utilisation de private dans Ruby 2.7. Quelles sont donc nos options ?

  1. Nous pouvons utiliser attr_accessor sous le mot-clé private pour que cela fonctionne, c'est-à-dire que nous obtiendrons une erreur lorsque nous voudrons faire référence à l'élément awesome_variableawesome_variable méthode.
classe Foo
  privé

  attr_accessor :awesome_variable
fin
  1. La seconde option consiste à exécuter la méthode privée sur les méthodes générées par attr_attribut; dans ce cas, nous devons également nous rappeler d'entrer le setter à cet endroit.
classe Foo
  attr_accessor :awesome_variable

  private :awesome_variable, :awesome_variable=
fin

Problèmes liés à la attr_ * ne sont pas les seuls obstacles. Nous pouvons rencontrer la même difficulté lorsque nous voulons créer un alias privé.

classe Foo
  private alias :bar, :awesome_bar
fin

Ruby 3.0 et nos activités

Heureusement, Ruby 3.0 introduit un grand changement puisque les méthodes de visibilité peuvent prendre un tableau en argument et les méthodes alias, attr_ *, peuvent réinitialiser le tableau avec les noms des méthodes qui ont été définies. Pour en savoir plus ici.

Maintenant, voyons quelques exemples dans la dernière version de l'euba et vérifions si les changements ont été effectués et comment nous pouvons les utiliser.
​
Dans le premier exemple, nous utilisons private avant l'accesseur attr :

classe Foo
  private attr_accessor :awesome_variable
fin

Un tel appel ne provoquera pas d'erreurs dans l'analyse de la syntaxe et, ce qui est important, la fonction Variable géniale etawesome_variable =deviennent privées.
​
La méthode alias fait la même chose, mais elle renvoie également un symbole comme nom de la nouvelle méthode et la rend visible.

classe Foo
  private alias :bar, :awesome_bar
fin

Il est intéressant de noter que nous pouvons également approfondir d'autres méthodes, par exemple l'impressionnante méthodeLe module d'impression peut être appelé entre private et attrIl est important qu'une telle méthode renvoie un tableau contenant les noms des méthodes qui se trouvent du côté droit de l'expression.

classe Module
  def awesome_print(names)
    met les noms
    noms
  fin
fin
classe Foo
  private awesome_print attr_reader :awesome_bar
fin 

Résumé

J'espère que cet article vous sera utile ! En cas de nouvelles sur Ruby 3.0. lire la suite ici.

Bon codage !

Offre développeur Ruby

En savoir plus :

Shut up and take your money #1 : Coûts cachés et agilité réelle dans le processus de développement de produits

Défis CTO - mise à l'échelle et croissance des produits logiciels

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench