Me gustaría marcar un método como obsoleto, para que las personas que lo usan puedan verificar fácilmente su código y ponerse al día. En Java, establece @Deprecated y todos saben lo que esto significa.
Entonces, ¿hay una forma preferida (o incluso herramientas) para marcar y verificar las desvalorizaciones en Ruby?
ruby
deprecated
pasajero
fuente
fuente
Respuestas:
Para casi todos los casos, depender de una biblioteca o metaprogramación para un desuso es excesivo. Simplemente agregue un comentario al rdoc y llame al
Kernel#warn
método. Por ejemplo:Si está utilizando Yard en lugar de rdoc , su comentario de documento debería verse así:
Por último, si se adhiere a tomdoc , haga que su comentario se vea así:
Además, no olvide eliminar el método obsoleto en algún lanzamiento futuro (y correctamente semver 'd) . No cometas los mismos errores que las bibliotecas de Java.
fuente
Ruby Standard Library tiene un módulo con la lógica de advertencia: https://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/Deprecate.html . Tiendo a preferirlo para mantener mis mensajes de desaprobación de una manera "estándar":
Tenga en cuenta que con este enfoque obtendrá información gratuita sobre dónde se realizó la llamada.
fuente
0
de un literal numérico lo hace octal y, por lo tanto, probablemente debería eliminarse.deprecate :initialize, UseThisClassInstead, 2017, 5
Si quieres ser malo (bajo la astucia de ser útil), puedes imprimir la primera línea de la pila de llamadas durante una advertencia para que los desarrolladores sepan dónde están usando una llamada obsoleta.
Esto es malo porque estoy bastante seguro de que es un éxito en el rendimiento.
Cuando se usa correctamente, esto incluirá la ruta absoluta al archivo y la línea donde se usó la llamada en desuso. Más información sobre Kernel :: llamador está disponible aquí
fuente
Usando ActiveSupport:
Las advertencias están desactivadas en el entorno de producción de forma predeterminada.
fuente
También puede usar
ActiveSupport::Deprecation
(disponible en la versión 4.0+), como tal:fuente
Usted tiene
libdeprecated-ruby
(2010-2012, ya no está disponible en rubygem en 2015)Una pequeña biblioteca destinada a ayudar a los desarrolladores que trabajan con código obsoleto.
La idea proviene del
D
lenguaje de programación ' ', donde los desarrolladores pueden marcar cierto código como obsoleto y luego permitir / rechazar la capacidad de ejecutar código obsoleto.fuente
Puede usar el patrón Class Macros y escribir algo como esto:
fuente
Al usar rieles, tiene el método de desaprobación Módulo #.
fuente
Canivete es una gema que le permite desaprobar sus métodos de manera simple y elegante. Un poco más al respecto aquí .
fuente
Terminé lanzando un método liviano:
Luego, para desaprobar un método, inserte una llamada en el cuerpo del método (o un constructor para una clase)
Es bastante declarativo y proporciona registros con información relevante. No soy muy Rubyist, por lo que puede necesitar algunos ajustes / YMMV.
fuente
Podemos usar métodos internos de macros. Ejemplo:
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
menospreciar: a,: get_a menospreciar: b,: get_b menospreciar: c,: get_c end
o = Foo.new p oa
fuente