Quem não está muito ligado na comunidade Ruby talvez só tenha ouvido falar sobre o Rails. É claro que o Rails é o framework mais famoso de Ruby e vem ajudando a alavancar o crescimento da linguagem, porém existem outros frameworks e DSLs em Ruby. Uma DSL muito boa é o Sinatra. O Sinatra é uma DSL para se criar aplicações web de maneira rápida e com o mínimo de esforço. (eu aprendi a utilizá-lo com o Anderson Leite da Caelum)
O Sinatra possui algumas diferenças com relação ao Rails como por exemplo, não segue o padrão MVC. Seu uso é recomendado para resolver problemas pequenos e é realmente bem fácil utilizá-lo.
Vamos supor que você precise fazer algo simples como criar uma listagem qualquer ou qualquer outra coisa simples não compensando o desenvolvimento em Rails. (hoje eu precisei criar um sitemap com alguns dados da minha aplicação, bem simples, algo que não seria necessário agregar ao escopo da minha aplicação Rails).
Antes de começar é necessário instalar o Sinatra
sudo gem install sinatra
Vou utilizar também o MySQL e o Data Mapper como ORM
sudo gem install dm-core sudo gem install dm-mysql-adapter
Supondo então que quero fazer uma simples consulta em uma tabela posteriormente criada e com dados cadastrados.
Crie o arquivo my_sinatra.rb com seu editor preferido
require 'rubygems'
require 'sinatra'
require 'dm-core'
#conexao com mysql
DataMapper.setup(:default, "mysql://user:pass@localhost/database")
#classe qualquer
class Product
include DataMapper::Resource
property :id, Serial
property :name, String
property :status, String
def self.active
all(:status => "A")
end
end
#listando produtos ativos
get '/' do
@products = Product.active
erb :index
end
#utilizando SQL diretamente
get '/sql' do
@products = repository(:default).adapter.select("SELECT * FROM produtos WHERE status = 'A'")
@products.collect{|p| p.id.to_s + " "}
end
Crie também uma pasta chamada views e o arquivo index.erb
<% @products.each do |p| %> <%= p.name %><br /> <% end %>
Para startar a aplicação
ruby my_sinatra.rb
O Sinatra roda na porta 4567 (http://localhost:4567/)
Repare que as urls são definidas no início do bloco: get ‘/’ do…
Para complementar o post, recomendo a leitura:
http://www.sinatrarb.com/intro
http://datamapper.org/getting-started