Publicado por Rafael Rosa em 30 de March de 2010

Lançada a versão 1.0 do Sinatra – Um grande marco para a melhor DSL web em Ruby

Em Novembro de 2007, nós apenas mencionamos uma nova biblioteca Ruby para criação de aplicações web, o Sinatra. Levou uma ano até que a comunidade começar a apoiá-lo e nós fizessemos um artigo mais aprofundado. Em todo caso, estamos orgulhosos em anunciar que o Sinatra chegou à versão 1.0!

O Sinatra é conhecido na comunidade Ruby por oferecer aos desenvolvedores um jeito simples de criar aplicações web de todos os tamanhos. O exemplo ultra simplificado clássico é:

require 'rubygems'
require 'sinatra'

get '/hi' do
  "Hello World!"
end

Os principais desenvolvedores do Sinatra, Ryan Tomayko, Simon Rozet e Blake Mizerany, em conjunto com outros 50 colaboradores, fizeram um excelente trabalho, produzindo uma poderosa e moderna DSL para Rubistas, e suas idéias inspiraram frameworks similares em outras linguagens, como o Sammy em JavaScript. No ano passado, Satish Talim, do RubyLearning.com, escreveu um excelente artigo chamado 20 rubistas famosos estão usando o Sinatra - E você? (em inglês), que deu uma boa idéia de como ele está sendo utilizado, tanto em aplicações web grandes quando pequenas.

Novidades

Perguntamos à Blake Mizerany qual é a maior mudança entre a versão 0.9 e 1.0:

Acho que a maior mudança foi a limpeza que fizemos. Agora utilizamos internamente o Tilt como sistema de templating, o Sinatra amadureceu, paramos de brincar. Ele está super sólido, a API para extensões amadureceu de forma impressionante, é extremamente fácil criar novas extensões para ele, instalar helpers, métodos DSL e adicionar novas rotas. Tudo que o usuário precisa fazer é escrever require 'sinatra/sua-extensão' e pronto!.

O changelog oficial oferece mais informações úteis para desenvolvedores que já usam o Sinatra.

A mudança mais significativa, com impacto de longo prazo, é que no último ano foi adicionada integração com o Rack. Em sua apresentação Rack, Sinatra e Middleware (em inglês), Ben Schwarz analisa como o Sinatra interage com o Rack e como você pode utilizar os middlewares do Rack e funcionalidades de mais de um sistema no Sinatra. O principal ganho disso é que podemos criar aplicações modulares em Sinatra através de subclasses do Sinatra::Base para separar partes independentes de uma aplicação:

require 'rubygems'
require 'sinatra/base'

class MyApp < Sinatra::Base
  get '/' do
    "Hello world!"
  end
end

E então usar o seguinte comando num arquivo Rackup:

require 'my_app'
run MyApp

Instalando e experimentando o Sinatra

Se você ainda não está usando o Sinatra e quer fazer algumas experiências, você pode instalá-lo com o RubyGems:

gem install sinatra

Coloque o código de exemplo clássico dentro de um arquivo example.rb:

require 'rubygems'
require 'sinatra'

get '/hi' do
  "Hello World!"
end

Depois, após executar o arquivo Ruby, ao acessar o endereço http://localhost:4567/hi você deve ver a mensagem "Hello World!".

Aprenda mais online e no IRC

Os exemplos acima são extremamente triviais, mas você pode fazer coisas muito mais complexas (como inserir aplicações Sinatra dentro de aplicações Rails) e o web site oficial do Sinatra tem exemplos muito interessantes do que você pode fazer com ele. Você também pode consultar a extensa documentação disponível e se quiser dar uma olhada em vários projetos reais que usam o Sinatra para entender os padrões e técnicas utilizados, há uma excelente lista com aplicações e extensões feitas com ele.

Por fim, se quiser fazer perguntas ou jogar conversa fora com os desenvolvedores e usuários do Sinatra, dê uma olhada no canal #sinatra do irc.freenode.net. Você sempre irá encontrar entre 50 e 100 pessoas por lá.

5 Comentários para “Lançada a versão 1.0 do Sinatra – Um grande marco para a melhor DSL web em Ruby”

  1. #1
    Fernando Ribeiro Disse:

    Não conhecia o Sinatra até pouco tempo atrás, mas ele me chamou muito atenção pela simplicidade do projeto, concerteza vou me aprofundar melhor agora com a nova versão parabens a equipe do Sinatra

  2. #2
    Tweets that mention Lançada a versão 1.0 do Sinatra - Um grande marco para a melhor DSL web em Ruby -- Topsy.com Disse:

    [...] This post was mentioned on Twitter by Ruby Inside Brasil and Ismael Stahelin, Thiago Branco Meurer. Thiago Branco Meurer said: Novo artigo: Lançada a versão 1.0 do Sinatra - Um grande marco para a melhor DSL web em Ruby http://bit.ly/aGNgyD (via @rubyinside_br) cool [...]

  3. #3
    Padrino - Um Framework para aplicações web baseado em Sinatra Disse:

    [...] os passos do Sinatra 1.0 surge o anúncio oficial do Padrino (repositório no GitHub), um framework para aplicações web [...]

  4. #4
    uchoaaa Disse:

    Comecei a trabalhar essa semana com o Sinatra e achei bem bacana. Era justamente o que precisava, um framework simples para um serviço web simples. O serviço em questão não tem persistência, nem interface em html e apenas 2 'actions', logo a escolha do uso do Sinatra caiu muito bem.
    Mas, tenho para mim que se for para configurar todo o Sinatra para trabalhar com view builders, routers e tudo mais, prefiro usar o Rails. Tudo isso já está lá, pronto para uso.
    No mais, sucesso ao Sinatra!

    []s

  5. #5
    Henrique Disse:

    Estou vendo vários entusiastas sobre o sinatra/padrino, estou com um site feito nessa linguagem e estou precisando de alguém que se aventure para dar manutenção nele, criar novos módulos e ainda ser remunerado, é, o problema de uma linguagem desconhecida é essa, se o programador muda de área, vc fica na mão.

    Espero que haja uma esperança para mim, rs.
    Abs.

    ps:
    Caso alguém se habilite meu email é o rickmail@gmail.com

Deixe um Comentário