Desenvolvimento Web com Sinatra - Criando um Blog Estático
E ai galera, tudo bom?
Hoje estou aqui para falar sobre Sinatra, uma DSL para criar aplicações web em Ruby com o mínimo de esforço. Como exemplo irei criar um blog estático no estilo de Jekyll.
A sigla DSL vem de "Domain Specific-Language" em inglês e nada mais é do que uma linguagem de especificação para o domínio particular de um problema (vide Wikipedia).
Onde Usar
Sinatra é feito para casos específicos e usado geralmente em aplicações simples que demandam uma performance melhor do que de um framework como Ruby on Rails. Vamos supor que precisamos fazer uma API que retorne os dados de um cliente em JSON ao passarmos o id via GET, invés de fazermos uso de um framework mais completo, podemos fácilmente criar um aplicação Sinatra que só faça isso.
Iniciando com Sinatra
Primeiro de tudo você precisa ter o Ruby instalado em sua máquina, isso pode ser feito via RVM, nesse post explico como instalar e configurar em ambiente Linux.
Com o Ruby em mãos, vamos começar instalando a gem do Sinatra, rode o comando abaixo no terminal:
Vamos criar uma pasta para o projeto e o arquivo principal de nosso blog, escolha o diretório de preferência e rode:
No exemplo acima dei o nome de sinatra-blog
para pasta, e main
para o arquivo, escolha o que preferir.
Abra o arquivo criado acima e jogue o código abaixo:
# encoding: UTF-8
serve para definir a codificação e permitir a utilização de caracteres UTF-8.Salve o arquivo, acesse a pasta do projeto via terminal e rode o comando ruby main.rb
, agora se você acessar http://localhost:4567/
deverá ver a mensagem na tela. Temos nossa primeira aplicação Sinatra rodando! É só isso mesmo, basta importar o arquivo do Sinatra e definir o método da página inicial e pronto, já temos uma aplicação rodando.
Sinatra usa REST, ou seja, sempre definimos o verbo HTTP que está executando a requisição, cada definição é como uma rota do Rails.
Ctrl+C
para parar e ruby main.rb
para iniciar novamente.Criando um Blog Estático
Layout
Vamos criar uma página HTML que possa servir de base para todo nosso blog, assim podemos chamar todas páginas dentro dela sem ter necessidade de ficar repetindo a parte que não será alterada, isso é chamado layout.
Dentro da pasta do projeto, crie uma pasta chamada views
e dentro dela crie um arquivo layout.erb
e adicione um conteúdo como abaixo:
O conteúdo de todas as páginas de nosso blog será inserido no lugar que definimos <%= yield %>
.
Criando a Página Inicial do Blog
Altere o arquivo main.rb
na rota padrão (get "/"
) para invés de exibir uma mensagem chamar uma página HTML:
Crie um arquivo chamado index.erb
(com a extensão erb
podemos embutir código Ruby no HTML) e defina uma mensagem de boas vindas para a home do blog:
Listando Arquivos HTML dos Posts na Home
Como nosso blog será estático, cada post nada mais é do que uma página HTML. Por organização, vamos criar um pasta chamada posts
dentro de views
para manter todos os artigos.
Vamos criar um script que leia o conteúdo dessa pasta e exiba na home do blog todos os posts cadastrados. O arquivo main.rb
ficará assim:
Primeiro importamos a classe find
, depois criamos um método que recebe um caminho, verifica se não é um diretório e retorna um array com o nome de todos arquivos encontrados. Na rota inicial, apenas chamamos a função acima e armazenamos o retorno em uma variável de instância que estará disponível na view.
Coloque o código abaixo no arquivo index.html
para percorrer todos os posts e exibir na home:
Exibindo Posts Salvos
Como já temos links para os posts do blog, precisamos criar o método responsável por exibir os posts. Inclua o código abaixo no arquivo main.rb
:
/?
serve para deixar opcional o uso de /
no final da url.Aqui definimos uma rota que espera um parâmetro, verifica se existe o arquivo (se não existir lança um erro 404) e exibe o post.
Criando Página de Erro Personalizada
Criar uma página de erro personalizada é facil, basta adicionar o código abaixo e criar o arquivo 404.erb
dentro da pasta views
.
Criando Página Sobre o Autor
Por fim, vamos criar uma página responsável por exibir dados do autor, ela simplesmente carrega um HTML, veja:
Resultado
Conclusão
Sinatra sem dúvida é uma ótima ferramenta para completar a lista de qualquer desenvolvedor web e espero ter apresentado com clareza.
O código fonte completo desse tutorial está em meu GitHub.
Deixe sua opinião abaixo, o que você achou?
Até mais.