13/2/2008 | Tags: novas ferramentas, programação, ruby, sinatra, tradução | Escrito por: Dirceu Pauka Jr.
* Esse artigo é baseado em Sinatra Tutorial. A good starting point por Ari Lerner. Você pode encontrar outras informações no RubyForge (Sinatra)
Sinatra é um framework para linguagem Ruby extremamente leve. Ele roda tendo como base o servidor Mongrel, servindo com muita rapidez as requisições.
Por não ter a extensa biblioteca de “helpers” que o Rails tem e também por não seguir a linha MVC de Rails e Merb, o seu uso não é indicado em grandes aplicações.
Com foco em Web Services e pequenos aplicativos, Sinatra é uma ótima solução para rodar pequenas aplicações desenvolvidas em Ruby com muita eficiência.
O propósito do artigo é ser um guia de inicio para quem quer aprender mais sobre o framework, para isso vamos desenvolver um pequeno “own-microblog”…
Eu vou supor que você já tem conhecimento nessa linguagem e que a ferramenta gem não seja desconhecida. Então vamos começar instalando o gem do Sinatra:
Uma vez que o Sinatra deixa aberta a opção de escolher um ORM (activerecord, DBI, DataMapper…) você precisa ter também o gem de um deles instalado. Minha opção aqui é pelo Sequel:
Vamos agora cuidar da base de dados. Baixe o arquivo vendor.rar e coloque o diretório vendor dentro da raiz do seu projeto. Isso funcionara para conectar a aplicação e o BD. Por padrão o Sinatra carrega os arquivos init.rb dos diretórios de dentro da pasta vendor.
Se você abriu algum dos arquivos da pasta vendor já percebeu que será usada uma base de dados Sqlite. Como ensinar a instalar todas essas funcionalidades fogem do escopo de apresentar o Sinatra, peço para que o leitor faça sua pesquisa nesse assunto.
Por padrão foi definido que a base se chamará sqlite:///microblog.db.
Você pode ainda fazer sua própria conexão utilizando algo parecido com:
Com tudo instalado e configurado, é hora de criar nossa aplicação que como já falado será um pseudo microblogging.
Crie um arquivo chamado microblog.rb - ou baixe o meu pronto -, esse será o primeiro e último arquivo do nosso aplicativo!
Nele adicione:
Acredite, isso já seria o suficiente para rodar o Sinatra!
Como vamos rodar sqlite junto com Sequel:
E para conectar com a base:
A configuração das tabelas tem sintaxe parecida com migrations do Rails:
Isso ira gerar uma tabela de posts quando a aplicação for iniciada.
Agora já podemos usar a base de dados tranqüilamente dentro do projeto. Para facilitar, vamos criar um helperposts:
No sinatra os helpers são definidos dentro do bloco “helpers” como acima. O que foi feito é criar um atalho para o método do Sequel que acessa a tabela de posts.
Para a pagina inicial vamos fazer uma listagem dos “micro-posts”:
Se você estava acostumado com Rails: definir routes, criar um model, o controller e a view, esqueça! Aqui em uma tacada só você tem um route o controller e a view. E o model? Lembra do setup_tables? Então… é tipo lá.
Não se assuste! Nem tudo precisa ser dessa forma (html em meio de código). Sinatra tem um ótimo sistema de templates que usa o Erb (mesmo usado pelo Rails).
O bloco body do Sinatra força que o conteúdo que estiver dentro seja a saida do aplicativo (o retorno para o navegador).
Para entender melhor como funciona as “rotas” no Sinatra, um bloco assim na aplicação:
Vai responder todos requests do tipo GET para ‘/hello_world’. Se você escrever uma string ali dentro ou ainda utilizar o bloco body, o que estiver dentro vai ser o retorno para o navegador
Dentro do bloco get ‘/’ nós utilizamos um método chamado new_post_link que deve ser adicionado ao helper:
Vamos agora criar um bloco que irá servir para adicionar um novo update no pseudo microblog:
Com o formulário para inclusão pronto, falta o método que irá jogar isso para a base de dados:
Pronto! Aqui o Sinatra vai capturar o request do tipo POST “/create”, o método insert (Sequel) vai jogar o conteúdo do form para dentro da tabela posts na base de dados e o método redirect do Sinatra vai redirecionar para página inicial.
Agora vamos permitir a edição dos updates. No nosso metodo get ‘/’ já temos um link (em cima do post) para uma rota ‘/:id’ vamos a ela:
E claro a parte que cuida de atualizar o registro na BD:
Pronto! Temos um pequeno aplicativo rodando sobre o framework Sinatra! Muito simples, fácil e rápido.
É claro que o framework não é só isso. Sinatra tem capacidades que vão muito além que nossa aplicação de demonstração! Se você ficou interessado não deixe de pesquisar a documentação do Sinatra.
Veja uma aplicação que roda Sinatra: moourl da FLEXCODE.
Arquivos
\”oi\”
\’k\’



3 Comments so far
Leave a comment
Hehe… nem consegui fazer funcionar o sinatra, pra testar…
By Jader on 02.29.08 8:58 pm | Permalink
Cara, eu sou um mero estudante ainda. E não tem coisa pior que um programa necessário não rodar quando a gente quer.
Você sabe dizer porque será que ele não está funcionando no meu PC?
Já instalei usando o:
>gem install sinatra
e instalou tranquilo. Mas quando eu digito no console:
>sinatra
é retornado que esse não é reconhecido como um comando interno…
Que será que é, hein?
By Jader on 02.29.08 9:04 pm | Permalink
Eu também sou estudante rapaz!
Para você poder brincar com o Sinatra dentro do console do Ruby (IRB), você precisa digitar irb no console, e então dentro dele:
require ‘rubygems’
require ’sinatra’
Então fique a vontade para fazer tudo que eu disse no artigo, ou faça um simples “hello world”:
get ‘/’
”fala véio mundo!”
end
By Dirceu Pauka Júnior on 03.01.08 2:05 am | Permalink
Leave a comment
Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>