BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

RubyGems ganha Plugins

| por Mirko Stocker Seguir 0 Seguidores , traduzido por Felipe Rodrigues Seguir 0 Seguidores em 06 mai 2009. Tempo estimado de leitura: 2 minutos |

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?

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT