Assim como outras linguagens de programação, Ruby também tem um repositório de bibliotecas de código. Essas bibliotecas são chamadas de gems e quando as utilizamos dentro de nossos projetos, elas se tornam parte da aplicação e, por isso, as chamamos de dependências, já que sem elas o código não funcionaria.
O site Ruby Gems é um dos repositórios onde podemos visualizar diversas gems criadas pela comunidade. Depois de escolher uma gem para seu projeto, você pode instalá-la usando o comando:
$ gem install nome_da_gem
Com isso a dependência será instalada na aplicação, mas como essa informação poderia ser compartilhada com outras pessoas que poderiam vir a trabalhar no mesmo projeto? Como elas irão saber quais gems são necessárias para rodar a aplicação? Quando estamos trabalhando em um projeto em times é essencial que todos estejam utilizando as mesmas bibliotecas e essa informação pode ser facilmente compartilhada usando o Gemfile.
O Gemfile é um arquivo que gerencia as dependências de um projeto feito em Ruby e isso é fantástico! Pois agora, podemos listar todas as gems que iremos usar em um único lugar e compartilhar com outras pessoas.
Para começar, vamos criar um arquivo chamado Gemfile e dentro dele especificar a source (fonte) para o domínio oficial do Ruby Gems.
source 'https://rubygems.org'
A source é uma instrução para especificar de onde iremos baixar as dependências. Para contextualizar isso ainda mais, tenhamos como exemplo uma gem criada pela empresa campus code. O nome da gem será chamada de treinadev e, para deixar isso em um repositório privado, criamos o nosso próprio repositório fictício e referenciamos através do domínio: https://gems.campuscode.com.br. Podemos adicionar essa source, dentro do arquivo Gemfile, veja:
source 'https://rubygems.org'
source 'https://gems.campuscode.com.br'
Quando tentarmos instalar a gem treinadev, ela será procurada tanto na source ‘rubygems’ quanto na source gems.campuscode.
Como estamos usando o arquivo Gemfile para gerenciar as gems do projeto, iremos utilizar uma ferramenta chamada Bundler) que foi introduzida como padrão na versão 2.5.0 da linguagem Ruby. Assim como o comando gem, o bundler também é um gerenciador de dependências para a linguagem Ruby e com ele,iremos conseguir baixar todas as gems contidas no arquivo Gemfile. Mas antes precisamos saber se você já tem o bundler instalado. Para verificar, execute o comando:
$ bundle version
Bundler version 2.1.4 (2021-04-07 commit unknown)
Caso a versão do bundler tenha aparecido para você, significa que já está instalada. Caso, tenha dado o erro comando não encontrado, você pode instalar o bundler com o comando:
$ gem install bundler
Agora, precisamos editar o arquivo Gemfile adicionando as dependências que iremos utilizar:
source 'https://rubygems.org'
gem 'rails'
Adicionamos a gem rails, que faz referência ao framework Web Ruby on Rails e nos ajuda a criar aplicações Web de forma rápida, prática e concisa. Após adicionar a gem rails no arquivo Gemfile, iremos realizar a instalação com o comando:
$ bundle install
Esse comando vai percorrer todas as gems listadas no Gemfile e instalar cada uma delas (quando necessário).
Existe uma outra forma de instalar gems usando o comando bundle add:
$ bundle add rails
Esse comando vai instalar a gem rails, mas ela adiciona a biblioteca no final da lista de gems do gemfile. Por essa razão, nós preferimos incluir manualmente no arquivo para termos mais controle e organização.
Se tudo deu certo, podemos verificar se o Rails foi realmente instalado executando o comando rails version :
$ bundle exec rails version
Rails 6.1.3.1
Dependendo de quando você estará lendo esse tutorial, a versão do Ruby On Rails poderá ser diferente.
Agora que o Rails foi instalado, podemos criar uma nova aplicação usando o comando rails new:
$ bundle exec rails new campuscode
O comando rails new já cria um arquivo Gemfile para o projeto com as bibliotecas essenciais que ele tem como dependência. Então você não precisa se preocupar em criá-lo e pode adicionar outras gems neste mesmo arquivo.
Neste tutorial aprendemos a instalar bibliotecas Ruby utilizando o Bundler, no entanto, ele também pode ser utilizado para diferentes tarefas como atualizar, remover ou adicionar gems ao projeto. Você pode consultar os links abaixo para obter mais informações