Fundamentos do Sinatra
Aplicações web leves.
Fundamentos do Sinatra é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
O que é Sinatra?
Sinatra é uma DSL leve para criar aplicações web em Ruby com o mínimo de esforço.
- Não há convenções pesadas como no Rails
- Defina as rotas diretamente em um único arquivo
- É ideal para aplicações pequenas, APIs e protótipos
Você descreve verbos HTTP e caminhos e retorna um corpo de resposta.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endInstalando o Sinatra
Sinatra é um pacote. Você pode instalá-lo com o comando gem ou por meio de um Gemfile.
gem install sinatra- Ou adicione
gem 'sinatra'a um arquivo de dependências e executebundle install
Execute sua aplicação com ruby app.rb; por padrão, ela será disponibilizada na porta 4567.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'Sua primeira rota
Uma rota associa um verbo HTTP a um caminho de URL e a um bloco. O valor retornado pelo bloco torna-se o corpo da resposta.
get,post,putedeletesão associados a métodos HTTP- A última expressão do bloco é enviada ao cliente
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endRetornando HTML
Como o valor retornado é apenas uma cadeia de caracteres, você pode retornar HTML bruto diretamente.
- É útil para páginas rápidas sem um mecanismo de modelos
- Para aplicações reais, prefira visualizações ERB ou HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endModelando uma resposta em Ruby puro
Antes de conectar o HTTP, você pode modelar o que um manipulador retorna usando um método simples. Essa é a lógica que uma rota chamaria.
- Mantenha a lógica de negócio fora dos blocos de rota
- Isso torna o código testável sem um servidor
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')Verbos HTTP
O Sinatra oferece suporte a todos os verbos HTTP comuns como métodos de rota.
getlê dadospostcria dadosput/patchatualiza dadosdeleteremove dados
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endDefinindo códigos de status
Você controla o código de status HTTP com o auxiliar status.
status 404define o status Não encontradostatus 201indica um recurso criado- O padrão é 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endConfiguração com set
O Sinatra é configurado com set, enable e disable.
set :port, 8080altera a porta de escutaset :bind, '0.0.0.0'aceita conexões externasenable :loggingativa os registros de requisições
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endFiltros before
Um filtro before é executado antes de cada requisição correspondente. Ele é ideal para configurações como autenticação ou cabeçalhos de conteúdo.
- É executado no mesmo contexto das rotas
- Pode ler e modificar
paramse os cabeçalhos da resposta
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endAplicações modulares
Para projetos maiores, use o estilo modular, criando uma subclasse de Sinatra::Base.
- Mantém várias aplicações isoladas
- Facilita a montagem sob o Rack
- Chame
run!para iniciá-la manualmente
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!Simulando um roteador localmente
Você pode imitar a lógica de roteamento do Sinatra com um despachante simples baseado em um mapa para compreender o conceito.
- As chaves são caminhos e os valores são procedimentos manipuladores
- A consulta retorna o corpo da resposta
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callVerificação rápida
Teste sua compreensão dos conceitos básicos do Sinatra.
Recapitulação
Você aprendeu os fundamentos do Sinatra:
- Sinatra é uma DSL web leve instalada como um pacote
- As rotas associam um verbo HTTP a um caminho e a um bloco
- O valor retornado pelo bloco é o corpo da resposta
- Use os filtros
status,setebeforepara controlar o comportamento - As aplicações modulares criam subclasses de
Sinatra::Base
A seguir, você lidará com rotas dinâmicas e parâmetros.
Perguntas Frequentes
A aula “Fundamentos do Sinatra” é grátis?
Sim — o texto completo de “Fundamentos do Sinatra” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Fundamentos do Sinatra”?
Aplicações web leves. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Fundamentos do Sinatra”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos do Sinatra
- Rotas e parâmetros
- APIs JSON
- Middleware e Rack