Dependências de projetos Ruby: Gemfile
Depois de ensinar a colocar um site no ar usando o Jekyll. Vou responder uma pergunta que me fizeram: “Meu tema não tem uma Gemfile, e agora?” A colinha de hoje ensina o que fazer.
O que é uma Gemfile?
Bem antes de explicar o que é esse arquivo você precisa entender um pouquinho sobre projetos Ruby. Cada projeto, idependente da linguagem que você está usando, geralmente tem uma lista de dependências que são necessárias para esse projeto rodar. No caso de projetos Ruby, essa lista o gerenciamento de dependências é feito usando um sistema conhecido como Gemfile.
Cada pacote/biblioteca que você instala para ser usado pelo seu projeto é uma gem. Assim como o próprio Jekyll é uma gem, você pode precisar por exemplo de plugins Jekyll para fazer coisas coisas no seu site como paginar as postagens, incluir SEO e até construir automaticamente um feed XML. Para instalar e gerenciar tais plugins usa-se o Gemfile.
Meu tema não tem uma Gemfile
No tutorial eu usei o tema Fresh que já vem com uma Gemfile pronta. Mas e se eu escolher um tema sem uma Gemfile? Como que funciona?
Para começar, o comando bundle install
não irá funcionar. Esse comando busca a Gemfile para instalar as gems do projeto. Da mesma forma também não funcionará o comando bundle exec jekyll serve
.
Hoje eu vou ensinar como criar uma Gemfile, ou viver sem ela, para exemplificar os passos de hoje vou usar o tema Wall-E (linkei o meu fork do tema pois o original acabou de ganhar um PR com uma Gemfile hihi).
$ git clone git@github.com:jtemporal/Wall-E.git
$ cd Wall-E/
bundle install falhando
Se não da pra iniciar o servidor usando o bundle, a alternativa é fazê-lo usando o Jekyll purão mesmo:
$ jekyll serve
jekyll serve falhando
É nessa hora que você começa a perceber como seria legal ter uma Gemfile. Se você tem ela fica muito mais fácil começar a rodar o projeto. Pra resolver esse erro basta fazer os seguintes passos:
$ gem install jekyll-gist
$ jekyll serve
E acessar localhost:4000
.
Uma forma de saber quais gems instalar antes de rodar o servidor é checar as gem necessárias para o tema no arquivo _config.yml
na tag plugins
:
plugins: [jekyll-gist]
A tag plugins traz a lista de gems necessárias para aquele projeto Jekyll.
Criando a sua Gemfile
Tá eu já sei rodar um projeto sem Gemfile e sei instalar as gems na mão, mas não quero ficar fazendo isso, então como que eu crio uma Gemfile?
Comece criando um arquivo chamado Gemfile
no root do projeto:
$ touch Gemfile
Nesse arquivo você vai listar todas as dependências, inclusive o próprio Jekyll:
source "https://rubygems.org"
gem "jekyll"
gem "jekyll-gist"
Assim é só executar:
$ bundle install
$ bundle exec jekyll serve
E seguir fazendo os posts ;)
Links
- Tutorial sobre Gems, Gemfiles and Bundler em inglês e com vídeos