Rack - Uma Rápida Apresentação

Antes de começar a escrever qualquer coisa sobre Ruby on Rails ou Sinatra, decidi fazer um rápido estudo de algo que, particulamente, nunca dei a devida atenção até então, a Gem que permite o desenvolvimento do lado do Servidor com ruby, o Rack.

Similar ao último post sobre nodejs, não faremos nada de tão avançado, vamos apenas nos apresentarmos a este recurso do Ruby que é de suma importância para o funcionamento dos seus já citados e famosos frameworks. O Rack serve como uma camada intermediária entre um código ruby e um servidor web através de sua API. O primeiro passo para sua utilização, com o ruby devidamente instalado é instalar a gem.

gem install rack

Seguindo o padrão de qualquer servidor, o código que irá criar nosso servidor deve implementar um tratamento para uma requisição para processar e devolver uma resposta para o cliente. A estrutura básica de qualquer servidor implementado com Rack consiste em criar uma classe com um método ‘call’ que receba uma hash com as informações da requisição e que retorne uma outra hash com uma resposta para o usuário, que deve incluir informaçoes do cabeçalho e do corpo.

# hello_world.rb
class HelloWorld
   def call(env)
     [200,{"Content-Type":"200"},["Hello World!"]]
    end
end

Agora basta escrevermos o arquivo config.ru que será usado para subir nossa aplicação.

# config.ru
require 'rack'
require './hello_world.rb'

run HelloWorld.new

Para subirmos a aplicação basta utilizar o comando:

rackup config.ru

A aplicação vai ser iniciada por padrão na porta 9292 e ao acessarmos http://localhost:9292, teremos nossa aplicação retornando a mensagem espeficicada. Embora o Ruby on Rails e o Sinatra já implemetem o Rack por baixo dos panos é importante conhecermos um pouco a respeito, pois usando o Rack podemos criar nossos pŕoprios frameworks escritos em Ruby ou mesmo para fazermos algum tipo de alteração no core dos frameworks já existentes.