BT

RubyGems ganha Plugins

por Mirko Stocker , traduzido por Felipe Rodrigues em 06 Mai 2009 |

O release recente do RubyGems versão 1.3.2 é mais do que apenas um release de manutenção, ele também contém novas funcionalidades:

O RubyGems 1.3.2 irá carregar plugins instalados em gems ou no $LOAD_PATH. Os plugins, que devem ser nomeados 'rubygems_plugin', são descobertos via Gem::find_files e então carregados.

Um exemplo vem de Ryan Davis: O Graph plugin gera um gráfico das dependências e informações (dependências desatualizadas e que estão por vir) de seus Gems instalados.

Nós conversamos com o mantenedor do RubyGems Eric Hodel para entender mais sobre a ideia de plugins para o RubyGems:

A lista de solicitações de funcionalidades do RubyGems tem várias entradas de pessoas que querem adicionar algo e algumas delas como pacotes stand-alone. Há também coisas que você pode querer fazer no momento da instalação que só seria possível com intervenção manual do usuário.

Os plugins começaram com um patch de Neil Wilson para adicionar ganchos de instalação ao RubyGems para o Debian que tornaria mais fácil integrar os dois. Com esse patch nós adicionamos dois arquivos especiais que o RubyGems tentaria exigir no startup, rubygems/defaults/operating_system.rb para pacotes ruby e rubygems/defaults/#{RUBY_ENGINE}.rb para implementadores ruby adicionarem funcionalidades especiais. Por exemplo, Rubinius pode pré-compilar todos os arquivos .rb no gem para reduzir o tempo de startup.

Ao mesmo tempo eu adicionei o Gem.find_files que permite aos autores de gems facilmente construir seu próprio sistema de plugins. O RDoc usa isso para carregar automaticamente seus plugins.

Já que isso se mostrou bom para o RDoc, eu decidi que o RubyGems deveria ter a mesma funcionalidade.

Eu não tentei fazer com que os plugins tenham uma forma compreensiva de se ligar a todo canto do RubyGems. Estou certo que as pessoas irá desejar acessar áreas que não possuem um aceso fácil e espero que elas enviem solicitações ao RubyGems para me ajudar a encontrá-las. É muito mais fácil para mim melhorar a API um pouco para um plugin do que é para manter uma nova funcionalidade inteira.

Minha esperança é que pessoas criativas forneçam coisas maravilhosas que eu não tenha que entregar e manter dentro do RubyGems.

Além do Graph plugin, há também o rubypan para busca rubypan.org e eles estão trabalhando em "um plugin que irá criar um dicionário OS X a partir dos dados do ri que podem ser atualizados sempre que você instala ou desinstala um gem".

Os autores de Plugins podem pegar ganchos nas ações antes e depois da instalação ou desinstalação. Veja a Documentação do Gem. Escrever um plugin para seus próprio comando é bem simples: Crie uma sub-classe de Command e registre-a com o Gem::CommandManager.

Você sente falta de alguma funcionalidade no RubyGems que poderia ser fornecida por um plugin?

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT