Publicado em 3 de junho de 2016  
Em ,  


Agora que você já sabe um poucos mais sobre as Gems, vamos definir quais serão usadas em nosso projeto. Não que você não possa incluir uma Gem (ou excluir) posteriormente, mas com o tempo você terá alguns pacotes valiosos para cada tipo de projeto.

Porém, antes de selecionarmos quais usaremos, precisamos definir o que será o nosso projeto.

Definição

Pensei em algumas possibilidades interessantes, mas a melhor opção continua sendo o bom e velho catálogo de filmes. Apenas para aprofundarmos mais no aprendizado, vamos pensar um pouco além de uma única tabela (geralmente chamada movies).

Example's Database

Seleção

Inicialmente selecionei três Gems:

  • CarrierWave, para gerenciar os uploads de arquivos.
  • Cocoon, para tratar formulários aninhados.
  • Kaminari, para gerenciar a paginação das consultas ao banco de dados.

E o arquivo Gemfile ficou assim:

source 'https://rubygems.org'

gem 'sdoc', '0.4.1', group: :doc

gem 'rails', '4.2.6'
gem 'sqlite3', '1.3.11'

gem 'jbuilder', '2.5'

gem 'coffee-rails', '4.1.1'
gem 'sass-rails', '5.0.4'
gem 'uglifier', '3.0.0'

gem 'jquery-rails', '4.1.1'

gem 'carrierwave', '0.11.2'
gem 'cocoon', '1.2.9'
gem 'kaminari', '0.17.0'

Explicação

Por gosto próprio eu prefiro definir a versão específica da Gem diretamente no Gemfile, porém você poderia utilizar apenas gem ‘carrierwave', gem ‘carrierwave', ‘>= 0.11.2’ ou gem ‘carrierwave', '~> 0.11.2’. Mas qual a diferença entre cada forma?

  • gem ‘carrierwave', utilizar a última versão estável.
  • gem ‘carrierwave', '0.11.2', utilizar a versão 0.11.2.
  • gem 'carrierwave', '>= 0.11.2', utilizar a última versão estável maior ou igual a 0.11.2.
  • gem 'carrierwave', ‘~> 0.11.2', utilizar a última versão estável maior ou igual a 0.11.2 e menor que a 0.12.0.

Observação

Lembrando que você pode incluir (ou excluir) uma Gem a qualquer momento, não precisa se preocupar em fazer um levantamento completo no início do projeto.