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
opa pergunta, você ja testou esse seu exemplo com sqlite?
eu testei aqui e não deu muito certo não acho que talvez eu esteja fazendo algo errado… e precise de algo mais quando se usa o sqlite…
e o seu select ali no banco não seria na tabela products?
eu coloquei no meu github o seu codigo só que usando o adapter pra sqlite.
http://github.com/hidenowt/sinatra_testes/tree/master/2
Herminio,
eu não cheguei a testar com o sqlite, você já olhou na documentação do data mapper?