Je voudrais marquer une méthode comme obsolète, afin que les personnes qui l'utilisent puissent facilement vérifier leur code et rattraper leur retard. En Java, vous définissez @Deprecated et tout le monde sait ce que cela signifie.
Existe-t-il donc un moyen préféré (ou même des outils) de marquer et de vérifier les dépréciations dans Ruby?
ruby
deprecated
aveugle
la source
la source
Réponses:
Dans presque tous les cas, dépendre d'une bibliothèque ou d'une métaprogrammation pour une obsolescence est excessif. Ajoutez simplement un commentaire au rdoc et appelez la
Kernel#warn
méthode. Par exemple:Si vous utilisez Yard au lieu de rdoc , votre commentaire de doc devrait ressembler à ceci:
Enfin, si vous adhérez à tomdoc , faites ressembler votre commentaire à ceci:
En outre, ne pas oublier d'enlever la méthode désapprouvée dans un avenir (et bien semver version « d) . Ne faites pas les mêmes erreurs que les bibliothèques Java.
la source
Ruby Standard Library a un module avec la logique d'avertissement: https://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/Deprecate.html . J'ai tendance à le préférer pour conserver mes messages d'obsolescence de manière "standard":
Notez qu'avec cette approche, vous obtiendrez gratuitement des informations sur l'endroit où l'appel a eu lieu.
la source
0
d'un littéral numérique le rend octal et devrait donc probablement être supprimé.deprecate :initialize, UseThisClassInstead, 2017, 5
Si vous voulez être méchant (sous prétexte d'être utile), vous pouvez imprimer la première ligne de la pile d'appels pendant un avertissement pour indiquer aux développeurs où ils utilisent un appel obsolète.
C'est méchant parce que je suis presque sûr que c'est un succès.
Lorsqu'il est utilisé correctement, cela inclura le chemin absolu vers le fichier et la ligne où l'appel obsolète a été utilisé. Plus d'informations sur Kernel :: caller sont disponibles ici
la source
Utilisation d'ActiveSupport:
Les avertissements sont désactivés par défaut dans l'environnement de production
la source
Vous pouvez également utiliser
ActiveSupport::Deprecation
(disponible dans la version 4.0+), en tant que tel:la source
Vous avez
libdeprecated-ruby
(2010-2012, plus disponible sur rubygem en 2015)Une petite bibliothèque destinée à aider les développeurs à travailler avec du code obsolète.
L'idée vient du '
D
' langage de programmation, où les développeurs peuvent marquer certains codes comme obsolètes, puis autoriser / interdire la possibilité d'exécuter du code obsolète.la source
Vous pouvez utiliser le modèle de macros de classe et écrire quelque chose comme ceci:
la source
Lorsque vous utilisez des rails, vous disposez de la méthode Module # deprecate.
la source
Canivete est un joyau qui vous permet de déprécier vos méthodes de manière simple et élégante. Un peu plus à ce sujet ici .
la source
J'ai fini par lancer une méthode légère:
Ensuite, pour déprécier une méthode, insérez un appel dans le corps de la méthode (ou un constructeur pour une classe)
C'est assez déclaratif et fournit une journalisation avec des informations pertinentes. Je ne suis pas vraiment un Rubyiste, donc il faudra peut-être peaufiner / YMMV.
la source
Nous pouvons utiliser des méthodes de macros internes. Exemple:
class Foo def get_a; puts "I'm an A" end def get_b; puts "I'm an B" end def get_c; puts "I'm an C" end
fin fin
obsolète: a,: get_a obsolète: b,: get_b obsolète: c,: get_c end
o = Foo.new p oa
la source