Suprimindo avisos no Ruby

17/01/07

Se você seguiu o post Localização de mensagens de erro e datas no Rails, deve ter percebido que toda vez que você inicia o WEBRick, mensagens avisando que você está sobrescrevendo constantes aparecem. Isso acontece por que o Ruby permite que você redefina constantes, diferente de outras linguagens, mas avisa antes.

=> Booting WEBrick...
./script/../config/../lib/overrides.rb:5: warning: already initialized constant MONTHNAMES
./script/../config/../lib/overrides.rb:6: warning: already initialized constant DAYNAMES
./script/../config/../lib/overrides.rb:7: warning: already initialized constant ABBR_MONTHNAMES
./script/../config/../lib/overrides.rb:8: warning: already initialized constant ABBR_DAYNAMES
=> Rails application started on http://0.0.0.0:3000

Você pode desabilitar essas mensagens somente no trecho onde você redefine suas contantes com a variável global $VERBOSE.

old_verbose = $VERBOSE
$VERBOSE = nil
 
Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
Date::DAYNAMES = %w(Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado)
Date::ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Aug Set Out Nov Dez)
Date::ABBR_DAYNAMES = %w(Dom Seg Ter Qua Qui Sex Sáb)
 
$VERBOSE = old_verbose

Comentários #


#1 Rodrigo Kochenburger disse:
30 Jan 07, 11:08PM

Opa, não conhecia teu blog :)

Primeiro comentário, então

No rails existe o método Kernel#silence_warnings que faz exatamente isso.

silence_warnings do
# code with warnings here
end

#2 Nando Vieira disse:
30 Jan 07, 11:19PM

Fala Rodrigo! Eu tenho você no GTalk! Te adicionei muito tempo atrás (1 ou 2 anos) quando comecei a fuçar no Rails! ;)

Valeu pela dica!

#3 Rodrigo Kochenburger disse:
31 Jan 07, 11:50AM

Eu sei :) Vi o link pro teu blog no gmail.. hehe

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML:
adicione-o no pastie.caboo.se ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.