Gostaria de marcar um método como obsoleto, para que as pessoas que o utilizam possam verificar facilmente seu código e atualizá-lo. Em Java, você define @ Deprecated e todo mundo sabe o que isso significa.
Então, existe uma maneira preferida (ou mesmo ferramentas) de marcar e verificar deprecações no Ruby?
ruby
deprecated
cego
fonte
fonte
Respostas:
Para quase todos os casos, dependendo de uma biblioteca ou metaprogramação para uma depreciação, é um exagero. Basta adicionar um comentário ao rdoc e chamar o
Kernel#warn
método Por exemplo:Se você estiver usando o Yard em vez do rdoc , o comentário do seu documento deverá ficar assim:
Por fim, se você aderir ao tomdoc , faça seu comentário assim:
Além disso, não se esqueça de remover o método descontinuado em alguma versão futura (e corretamente sempre ) . Não cometa os mesmos erros que as bibliotecas Java.
fonte
A Biblioteca Padrão do Ruby possui um módulo com a lógica de aviso: https://ruby-doc.org/stdlib/libdoc/rubygems/rdoc/Gem/Deprecate.html . Costumo preferir manter minhas mensagens de reprovação de uma maneira "padrão":
Observe que, com essa abordagem, você obterá informações gratuitas sobre o local da chamada.
fonte
0
de um literal numérico o torna octal e, portanto, provavelmente deve ser removido.deprecate :initialize, UseThisClassInstead, 2017, 5
Se você quiser ser mesquinho (sob o truque de ser útil), poderá imprimir a primeira linha da pilha de chamadas durante um aviso para informar aos desenvolvedores onde eles estão usando uma chamada obsoleta.
Isso é mau porque tenho certeza de que é um sucesso.
Quando usado corretamente, isso inclui o caminho absoluto para o arquivo e a linha em que a chamada descontinuada foi usada. Mais informações sobre o Kernel :: caller estão disponíveis aqui
fonte
Usando o ActiveSupport:
Os avisos são desativados no ambiente de produção por padrão
fonte
Você também pode usar
ActiveSupport::Deprecation
(disponível na versão 4.0+), como tal:fonte
Você realmente tem
libdeprecated-ruby
(2010-2012, não está mais disponível no rubygem em 2015)Uma pequena biblioteca destinada a ajudar desenvolvedores que trabalham com código obsoleto.
A ideia vem da
D
linguagem de programação ' ', na qual os desenvolvedores podem marcar determinado código como obsoleto e depois permitir / não permitir a capacidade de executar código obsoleto.fonte
Você pode usar o padrão de macros de classe e escrever algo como isto:
fonte
Ao usar trilhos, você tem o método Module # deprecate.
fonte
Canivete é uma jóia que permite descontinuar seus métodos de maneira simples e elegante. Um pouco mais sobre isso aqui .
fonte
Acabei lançando um método leve:
Em seguida, para descontinuar um método, insira uma chamada no corpo do método (ou um construtor para uma classe)
É bastante declarativo e fornece informações relevantes ao registro. Eu não sou muito rubiista, então pode precisar de alguns ajustes / YMMV.
fonte
Podemos usar métodos de macros internos. Exemplo:
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
fim fim
descontinuar: a,: get_a descontinuar: b,: get_b descontinuar: c,: get_c end
o = Foo.new p oa
fonte