Liberado no RubyGems o gerador de blog estático que uso para este blog: Gerablog

I’m GeraBlog Image created by https://robohash.org/

No post em que falo sobre a gem Tenjin, expliquei como funciona o script que comecei a usar para gerenciar esse blog.

Há algum tempo, comecei a salvar os textos que publico como arquivos Markdown. E isso me facilitou muito quando eu queria usar algum novo sistema para meu blog.

O simples script que iniciou essa brincadeira, transformou-se (comparando a ele) em um amontoado de cĂłdigo, como algumas classes e gems a mais. Comecei com isso: Gist para o peimiro gerablog.rb.

A primeira versĂŁo do blog eu gerei com shell-script, mas conforme eu ia tendo ideias, como a de gerar automaticamente o RSS, a coisa foi complicando de tal forma que precisei partir para uma linguagem mais adequada.

E parti para a criação de algo que eu pudesse liberar como free-software.

Foi aí que a tormenta começou. Estimei que em dois dias transformaria o script inicial em um projeto minimamente organizado no GitHub. Santa Inocência! Foram mais de duas semanas em que isso tomou grande parte de meu tempo, inclusive tempo de trabalho.

Mas como preciso aprender Ruby para o trampo, fui adiante. E aprendi muito. Eu prefiro aprender tendo em conta algo prático para resolver. Não é a melhor forma, mas é o que funciona melhor para mim. Crianças, não sigam meu exemplo. Sempre se esforcem para aprender os fundamentos das coisas!

PrincĂ­pios

Conhecendo um pouco do rails, resolvei tambĂ©m ser metido a besta e escrever um sistema com opiniões. SĂł que sem muita brecha para personalizações… O sistema espera uma estrutura rĂ­gida de diretĂłrios e tem convenções para o texto e atĂ© mesmo para o nome dos arquivos.

Na raiz de seu blog, existem apenas os diretĂłrios que indicam as categorias dos textos. Por exemplo, nesse blog tenho:

C CurrĂ­culo Diversos Javascript Perl ProgramadorBipolar Python Ruby Rust

Em cada um deles existe um subdiretĂłrio images, onde as imagens para cada texto sĂŁo salvas.

Os arquivos devem ser salvos no formato YYY-MM-DD-nome-do-arquivo.md. Em geral, nome-do-arquivo é o título do texto, mas sem acentuação ou pontuação.

No arquivo com o texto, a primeira linha deve ser o tĂ­tulo do texto, por exemplo, # TĂ­tulo do texto, a segunda linha deve estar em branco, e a terceira deve conter um resumo do texto, como por exemplo, ## Resumo do texto. as Marcas # e ## sĂŁo obrigatĂłrias.

Para o resto do texto, use Markdown Ă  vontade.

É gerado um feed.xml geral, e para categoria, em seu diretório, é criado um index.html e um feed.xml contendo apenas as entradas da categoria.

Criando um blog

O sistema não é uma gem para ser usada em seus programas (até se pode fazer isso), o seu uso é pela linha de comando com o executável gerablog.

Para criar um novo blog, execute gerablog --new ~/meublog, por exemplo. Ele irá criar a seguinte estrutura de arquivos:

➤ tree ~/meublog
/home/paulohrpinheiro/meublog
├── assets
│   └── css
│       └── gerablog.css
├── gerablog.conf
├── output
├── templates
│   ├── categories.rbhtml
│   ├── category.rbhtml
│   ├── feed.rbxml
│   ├── footer.rbhtml
│   ├── header.rbhtml
│   ├── index.rbhtml
│   └── post.rbhtml
└── texts

Em assets, se quiser incluir imagens e CSS e Javascript, sinta-se desimpedido. O arquivo assets/css/gerablog.css é o super CSS que consegui criar (sim, estou me esforçando para aprender).

Como indica o nome, gerablog.conf é a configuração. Nem rele nesse arquivo!

O diretório output é o local em que ficará o blog gerado, como tudo que precisa, inclusive cópia da pasta assets.

Em templates temos os templates usando Tenjin. Altere como preferir, eles serĂŁo a base de seu blog.

Já em texts devem estar os seus textos, organizados por categoria (diretórios) e, se necessário, imagens, como explicado antes.

Gerando o conteúdo estático

Para criar seus arquivos html e RSS, execute o comando

gerablog --generate ~/meublog

Isso criará o diretório output com tudo que é necessário para o blog.

ConfissĂŁo

Ao escrever esse texto, ainda estava usando o velho script. A consciĂŞncia pesou, e agora esse blog finalmente Ă© gerado pelo Gerablog.