Paulo Henrique Rodrigues Pinheiro

Um blog sobre programação para programadores!


Liberada nova versão do GeraBlog (0.2.0)

Agora o GeraBlog lista os mais recentes textos da página inicial.

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

Meu legado preferido

Eu tenho meu sistema legado, meu monstrinho de estimação, o GeraBlog, meu gerador de sites estáticos, usado para esse blog.

Nesse texto eu conto a história dele. Basicamente, eu não sabia (ainda não sei) programar em Ruby, mas decidi fazer um script para gerar meu blog. Do script, queria um sistema mais organizado, e aí saiu isso. É um código muito feio, mas é o que faz meu blog funcionar. Um típico sistema legado!

Como não fazer software livre

A única pessoa que interessou-se pelo sistema, pediu ajuda e eu pensei comigo "amanhã eu vejo isso", e passou-se bem mais de um ano... Eram tempos difíceis, como conto nesses textos, que, graças a Deus, passaram. Era algo tão besta, mas agora está respondido.

Também, algumas alterações que tinha feito durante esse tempo, eu apenas comitei localmente e não registrei em Changelog nem com mudança de versão. Espero que essas más práticas tenham acabado!

Nova versão

A página inicial de meu blog só tinha uma espécie de "missão", e muitos links. Quem chegasse na home não tinha muita noção do que fazer, pra onde ir. Então há muito tempo estava pensando nisso: inserir uma lista de links para os mais recentes textos.

Agora, existem links para os últimos cinco textos do blog na home, dando uma ideia inicial pra quem chega do nada, e também, imagino, para aquela pessoa que volta ao blog para ver as novidades, mas não curte feed.

Um pouco de código

Pra manter a tradição, um pouco de código!

Mesmo o código estando ruim, a alteração foi simples.

A nova feature

Na geração do blog e dos feeds, há uma lista de todos os posts, já renderizados. O que fiz foi alterar a configuração para incluir o parâmetro de quantidade de posts a exibir (itens_in_index):


@@ -28,7 +29,8 @@ module GeraBlog
                   'name' => 'GeraBlog Static Blog Generator',
                   'description' => 'GeraBlog - My own static site generator',
                   'language' => 'pt-br',
-                  'itens_in_rss' => '50'
+                  'itens_in_rss' => '50',
+                  'itens_in_index' => 10
     end

No meu arquivo de configuração deixei esse valor em 5, que me pareceu mais agradável.

E no módulo GeraBlog, que está no arquivo lib/gerablog/blog.rb, adicionei os posts ao contexto do template:


@@ -156,7 +158,8 @@ module GeraBlog
         title: {
           title: @config['blog']['title'],
           description: @config['blog']['description']
-        }
+        },
+        posts: @posts.take(Integer(@config['blog']['itens_in_index']))
       }

E no template templates/index.rbhtml foi adicionar a nova variável e imprimir:


diff --git a/templates/index.rbhtml b/templates/index.rbhtml
index 47199b8..56f3fb1 100644
--- a/templates/index.rbhtml
+++ b/templates/index.rbhtml
@@ -1,4 +1,4 @@
-<?rb #@ARGS config, categories ?>
+<?rb #@ARGS config, categories, posts ?>
 <?rb import config['template']['header'] ?>

 <article>
@@ -7,4 +7,15 @@
   </p>
 </article>

+<article>
+    <h3>Recent posts</h3>
+
+    <?rb for post in posts ?>
+      <a href="${post[:url]}">
+        <h3 class="textcal">${post[:title]}</h3>
+        <p class="textcal">${post[:description]}</p>
+      </a>
+    <?rb end ?>
+</article>
+
 <?rb import config['template']['footer'] ?>

Atualizando a versão

As outras alterações foram para alterar a versão e documentar a mudança.

No CHANGELOG.md:


+## 0.2.0 (2018-08-25)
+
+* Show recent posts links in index

E no lib/gerablog/version.rb:


-  VERSION = '0.1.0'.freeze                                                                                                                                                                                                                     
+  VERSION = '0.2.0'.freeze

Comandos que sempre esqueço

Versão nova, vamos gerar a gem novamente:


gem build gerablog.gemspec

Instalar:


gem install ./gerablog-0.2.0.gem

E atualizar no RubyGems:


gem push gerablog-0.2.0.gem

O que permite instalar remotamente com um simples gem install gerablog.