RubyGems - RubyGems

RubyGems
Versão estável
3.2.20 / 11 de junho de 2021 ; 2 meses atrás ( 11 de junho de 2021 )
Repositório Edite isso no Wikidata
Escrito em Rubi
Sistema operacional Plataforma cruzada
Modelo Gerenciador de pacotes
Licença Licença Ruby
Local na rede Internet rubygems .org
Joias totais 133.000+
Total de downloads Mais de 14 bilhões

RubyGems é um gerenciador de pacotes para a linguagem de programação Ruby que fornece um formato padrão para distribuição de programas e bibliotecas Ruby (em um formato independente chamado "gem"), uma ferramenta projetada para gerenciar facilmente a instalação de gems e um servidor para distribuí-los. Foi criado por Chad Fowler , Jim Weirich , David Alan Black , Paul Brannan e Richard Kilmer durante a RubyConf 2004.

A interface para RubyGems é uma ferramenta de linha de comando chamada gem que pode instalar e gerenciar bibliotecas (as gemas). RubyGems se integra ao carregador de tempo de execução Ruby para ajudar a encontrar e carregar joias instaladas de pastas de biblioteca padronizadas. Embora seja possível usar um repositório RubyGems privado , o repositório público é mais comumente usado para gerenciamento de gemas.

O repositório público ajuda os usuários a encontrar gemas, resolver dependências e instalá-las. RubyGems é fornecido com o pacote Ruby padrão a partir do Ruby 1.9.

História

O desenvolvimento em RubyGems começou em novembro de 2003 e foi lançado ao público em 14 de março de 2004, ou Pi Day 2004. Em 2010, o repositório público padrão para gems mudou de gems.rubyforge.org para rubygems.org, que ainda está em uso . Além disso, o desenvolvimento do RubyGems foi movido para o GitHub em 2010. Embora o RubyGems exista desde o Ruby 1.8, ele não fazia parte da distribuição padrão do Ruby até o Ruby 1.9.

Anteriormente, a compatibilidade com RubyGems e Ruby variava. Muitas versões de RubyGems são quase totalmente incompatíveis com muitas versões de Ruby e algumas versões tinham recursos-chave inutilizáveis. Por exemplo, Ruby 1.9 veio com RubyGems 1.3.7 em sua distribuição padrão, mas RubyGems 1.4.x não era compatível com Ruby 1.9. Isso significava que a atualização do RubyGems no Ruby 1.9 não era possível até o RubyGems 1.5.0 ser lançado em 2011, dois anos após o primeiro lançamento estável do Ruby 1.9. Esses problemas de compatibilidade levaram a um rápido desenvolvimento do RubyGems, mudando para um cronograma de lançamento de 4 a 6 semanas. Isso se reflete em 38 lançamentos de 2004 a 2010 e 117 lançamentos de 2011 a 2016. 45 versões foram lançadas em 2013, que é o maior número de lançamentos em um ano para RubyGems.

Estrutura de uma joia

Cada gema contém um nome, versão e plataforma. Gems funcionam apenas em ruby ​​projetado para uma plataforma particular com base na arquitetura da CPU e tipo e versão do sistema operacional.

Cada joia consiste em:

  1. Código
  2. Documentação
  3. Especificação de gemas (Gemspec)

A organização do código segue a seguinte estrutura para uma gema chamada gem_name :

gem_name/
├── bin/
│   └── gem_name
├── lib/
│   └── gem_name.rb
├── test/
│   └── test_gem_name.rb
├── README
├── Rakefile
└── gem_name.gemspec
  • O diretório lib contém o código do gem.
  • O diretório test (ou spec) é usado para teste.
  • Rakefile é usado pelo Rake para automatizar testes e gerar código.
  • README inclui a documentação, RDOC , para a maioria das gemas.
  • A especificação da gema (gemspec) contém informações sobre o autor da gema, o tempo de criação e a finalidade a que a gema atende.

Preocupações com segurança

Como as gemas de ruby ​​executam seu próprio código em um aplicativo, isso pode levar a vários problemas de segurança devido à instalação de gemas maliciosas. O criador de gemas maliciosas pode comprometer o sistema do usuário ou servidor.

Vários métodos foram desenvolvidos para combater a ameaça à segurança:

  • Assinatura criptográfica de gemas desde RubyGems versão 0.8.11. Os comandos gem cert e gem install são usados ​​para esse propósito.
  • Novos modelos de assinatura, como X509 e OpenPGP , foram propostos e estão sendo ativamente discutidos entre os especialistas em Ruby.

Veja também

Referências

links externos