Blogando com Markdown no Github
Posted in Git, Linux on February 19th, 2009 by LeoLuz
Ultimamente venho fuçando nos repositórios do github. Ficou realmente bem legal o lance de misturar comunidades, projetos open source e git. Para quem não sabe, o git é um SCM distribuido criado por Linus Torvalds que segue o conceito de versionadores modernos como o bazaar e o mercurial. Se você não conhece nada sobre git mas quer dar uma fuçada no github aconselho a ler primeiro o micro tutorial de git do Akita para dar o ponta-pé inicial.
Atualmente o github é formado basicamente por projetos ruby e isso pode ser verificado neste gráfico. Nunca li um único tutorial sobre ruby; não por falta de vontade ou curiosidade, mas estou dando foco em aprender outras coisas ultimamente. Por enquanto, minha postura com ruby é meramente como usuário e isso já é o bastante para tirar proveito de projetos bem interessantes.
Semana passada descobri que o github oferece um serviço para que cada usuário possa publicar um site com as informações sobre seus projetos no formato de blog. Trata-se do github pages. O github pages oferece suporte ao jekyll que é uma espécie de blog engine que gera páginas estáticas.
Confesso que bati um pouco de cabeça até fazer as coisas funcionarem corretamente com a gem do jekyll e entender o seu padrão de diretórios e nomes de arquivos. Mas no final foi até bom porque achei uma outra gem que facilitou e muito a minha vida. Trata-se do jekyll_generator. Irei falar desse generator mais adiante.
Markdown ou textile?
O último fator, não menos interessante, que me chamou muito a atenção é que o jekyll suporta markdown e textile. Ambos provem um formato de texto de fácil leitura por um humano com a capacidade de gerar um documento html. Entre os dois eu particularmente prefiro o markdown pois sua linguagem é extremamente limpa, livre de markups e tags. Textile já não é limpo assim. Veja esse exemplo de textile na documentação do próprio jekyll e tirem suas conclusões. Estou escrevendo esse post usando o vim com a syntax mkd.vim e nesse momento ele está com essa cara:

Bom chega de contar história e vamos ao que interessa!
Pré-requisitos
Se você usa Ubuntu como SO lembre-se que para poder instalar as gems você precisará de basicamente 3 pacotes: ruby, ruby-dev e o rubygems. Caso você não tenha instalado esses pacotes ou mesmo não sabe se tem ou não, execute:
$ sudo aptitude install ruby rubygems ruby-devAs gems do ruby instalam um tipo de executável geralmente em: /var/lib/gems/[versão do ruby]/bin. Para não ter dor de cabeça toda vez que for instalar uma gem, adicionei esse caminho na minha variável $PATH.
Pronto.. Esses são os pré-requisitos para começar a brincadeira.
Setup do seu repo do github pages
Crie um novo repo no github com o nome no formato [seu usuário].github.com. O github sempre verifica se você tem um repo com o nome nesse formato e caso encontre, ele automaticamente publica seu conteúdo na respectiva url: http://[seu usuário].github.com.
Você pode sincronizar com esse repo, arquivos html estáticos, e a cada git push que você der, seu site será atualizado automaticamente. Mas até ai não tem muita graça.. É ai que entra o jekyll e as coisas começam a ficar mais interessantes.
Criando a estrutura do Jekyll
Como disse anteriormente o jekyll é uma espécie de blog engine, e para criar esse blog ele se baseia em uma determinada estrutura de arquivos e diretórios. Comecei a dar uma fuçada nesse padrão e a coisa começou a ficar meio chata.. Foi quando achei o jekyll_generator. Ele gera toda a estrutura do jekyll e já disponibiliza um template bem legal.
Para instalar a gem do jekyll_generator execute:
$ sudo gem source -a http://gems.github.com/
$ sudo gem install jekyll_generator
Agora já está tudo devidamente instalado. Basta clonar o seu repo do github e gerar a estrutura do jekyll lá dentro. Para isso faça:
$ git clone git@github.com:[seu usuário]/[seu usuário].github.com.git github-blog
$ cd github-blog
$ jekyll_generator . --title "Meu blog do github" Pronto.. Seu novo blog já está criado. Basta dar o push e tudo já vai automaticamente para o ar:
$ git add *
$ git commit -a -m 'estrutura inicial do jekyll'
$ git push
Escrevendo seus posts
Perceba que na estrutura do jekyll há um diretório chamado _posts. É lá que o jekyll busca os arquivos com o texto dos seus posts. Note que esse arquivo deve respeitar um padrão de nome para que ele seja devidamente identificado:
ano-mes-dia-nome-do-post.markdown
ou
ano-mes-dia-nome-do-post.textile
No topo do arquivo, é necessário utilizar uma notação yaml para informar ao jekyll qual o template ele deverá usar e qual será o título do post. Por exemplo:
---
layout: post
title: Blogando com Markdown no Github
---
Para ter uma noção do produto final verifique o meu blog do github aqui e sinta-se a vontade para fuçar, clonar, etc esse meu repo.
Até a próxima e qualquer dúvida ou sugestão, estamos ai!
[]’s
-LeoLuz-


