O básico de uma gema rubi

Utenho usado gemas rubi há algumas semanas, e tem sido ótimo, mas eu não estava realmente certo do que estava acontecendo debaixo do capô quando adicionei uma na minha aplicação. Então este post no blog é para me ajudar a entender como as gemas funcionam e espero que você também.

Uma gema rubi é um código rubi empacotado que você pode adicionar à sua aplicação. Isto pode poupar-lhe algum tempo usando código que outros escreveram para resolver problemas semelhantes. Por exemplo, se você quisesse mudar a cor de algum texto, você poderia instalar e usar a gem colorize. Você obtém toda sua funcionalidade sem nunca ter que escrever esse código você mesmo.

Sinatra é uma gem, Rack é uma gem, e eu fiquei surpreso ao saber que até mesmo Rails é uma gem. Todas as gems públicas são publicadas através do RubyGems.org. Aqui é onde as pessoas podem contribuir e compartilhá-las com a comunidade.

Comecemos instalando uma gem

Pick a gem and let’s install it. Eu escolhi adicionar a gem colorize ao meu aplicativo, o que muda a cor de uma string que passamos para dentro. Você pode executar gem install gem_name para baixar a gem no seu computador e torná-la disponível para suas aplicações. Quer saber onde essa gema vive após a sua instalação? Você pode executar gem_name qual gem_name e ele lhe dirá exatamente onde ela está.

gem install colorize

Para usar a gem no nosso código você precisará requerer a gem no topo do seu arquivo, colocando ‘gem_name’. Nós fazemos isso para que tenhamos acesso à gema e agora não precisaremos escrever nosso próprio código para colorir o texto.

require ‘colorize’

Agora que você tenha a gema instalada e requerida, você pode usá-la. Normalmente, se você for ao GitHub repo da gema, você encontrará informações importantes sobre suas características e como usá-las.

>

>

>

https://github.com/fazibear/colorize

Vamos usá-la!

Então lemos o readme e agora queremos adicionar alguma cor ao nosso texto. Adicionei três cores diferentes no meu código, chamando .colorze(:color) em uma string.

Executar o código

Great! Isso não parece bom? Então nós instalamos nossa gema e parece estar funcionando, mas e se tivermos uma aplicação maior que requer muitas gemas? Chamar a instalação de gemas e requerer cada gema parece dar muito trabalho. Certamente existe uma maneira mais fácil.

Bundler

Bundler torna a nossa vida muito mais fácil. O que é bundler? Bem, é uma jóia, claro! Ele rastreia cada gema e instala a gema e a versão exata que você precisa usar em sua aplicação. Para usar o bundler, você vai precisar de um Gemfile no diretório do seu projeto e dentro dele você pode listar quantas gems você quiser. Para fazer isso, basta abrir o Gemfile e adicionar gem ‘gem_name’.

Após ter adicionado ao seu Gemfile, certifique-se de executar a instalação do bundle no seu terminal. Isto irá instalar todas as gemas listadas no seu Gemfile, juntamente com as suas dependências. Isso certamente torna as coisas muito mais fáceis. O que é ótimo é que o Ruby 2.6 e mais tarde inclui o bundler automaticamente, então você não precisará instalá-lo você mesmo.

Parece que ainda precisamos adicionar ‘gem_file’ no topo dos nossos arquivos, e isso também parece dar muito trabalho se tivermos muitos deles. Acontece que o bundler pensou nisto também. Você pode adicionar ‘bundler require’ no topo do seu arquivo .rb e escrever Bunlder.require(:default). O que isso está fazendo sob o hood é chamar require ‘gem_name’ para cada gem que você tem no seu arquivo gem.

Bundler.require(:default)

Após você ter executado a instalação do bundle, você pode notar que muitas gems que você não adicionou estão sendo instaladas. Por que isso acontece? Muitas gemas requerem que outras gemas sejam instaladas junto com elas. Por exemplo, rails irão requerer muitas outras gemas e essas gemas podem requerer outras gemas e assim por diante. O Bundler irá se certificar que todas as versões de gems instaladas são compatíveis entre si.

Após encontrar as versões corretas de cada gem, ele grava essas versões em outro arquivo chamado Gemfile.lock. Ele torna possível instalar exatamente a mesma versão em cada máquina que precisará executar este aplicativo.

Um arquivo Gemfile.lock

Você pode ver no meu Gemfile.lock que lolize requer a gema de tinta e as versões que ele pode usar. Então o bundler vai pegar isso e a versão correta para nós. Isso não é útil? Obrigado bundler!

Então é isso! Espero que isso tenha ajudado você a entender o básico de uma gem e um bundler. Há muitas gemas por aí que você pode usar e pode procurar por elas aqui. https://rubygems.org/.

Deixe uma resposta

O seu endereço de email não será publicado.