Publicado por Rafael Rosa em 30 de Janeiro de 2009
Porque é errado usar “require ‘rubygems’”
Ryan Tomayko, conhecido como um dos líderes do grupo de desenvolvimento do micro-framework Sinatra, com certeza não mediu palavras quando publicou Porque usar "require 'rubygems'" em seu Aplicativo/Biblioteca/Testes é Errado:
Nunca faça isso no código da sua biblioteca, aplicativo, ou teste:
require 'rubygems'O sistema que uso para gerenciar meu $LOAD_PATH não diz respeito à sua biblioteca/aplicativo/teste. Usar RubyGems ou não é uma questão que diz respeito apenas ao ambiente de desenvolvimento. Sua biblioteca ou aplicativo não devem ter qualquer opinião sobre o assunto. Carrega-lo explicitamente é desnecessário ou sinal de falta de entendimento.
Mas... por quê?
Quando eu uso sua biblioteca, instalo seu aplicativo, ou executo seus testes, eu posso não querer usar RubyGems. Ao usar "require 'rubygems'" no seu código você elimina minha capacidade de tomar essa decisão. Eu não posso reverter seu carregamento, mas, antes de mais nada, você não deve carregá-lo.
Nunca havia pensado sob esse aspecto antes, e faz sentido o que Ryan diz. A escolha do sistema de gerenciamento de bibliotecas deve ser relegada ao ambiente de desenvolvimento, e não decidida de maneira arbitrária por uma única biblioteca ou parte de uma aplicação.
Leia o artigo do Ryan para conhecer o todo o raciocínio por trás disso e forme sua própria opinião. Definitivamente ele me fez pensar duas vezes antes de usar require 'rubygems' no meu próprio código, porém, com o começo da lenta migração para o Ruby 1.9, talvez isso deixe de ser um problema, já que o RubyGems foi incluído na versão e, por padrão, é carregado automaticamente. Ideias?
Ah, e não deixem de ler os artigos do Fabio Akita sobre RubyGems: Entendendo RubyGems e Anatomia de uma RubyGem.

Clique aqui para adicionar ao del.icio.us


15 de Fevereiro de 2009 às 22:23
Interessante! Nunca havia pensado nisso. Quase todos os meus projetos possuem o require 'rubygem'!!