0Pricing
Ruby Academy · Aula

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!'
end

Instalando 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 execute bundle 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, put e delete sã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!'
end

Retornando 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>'
end

Modelando 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.

  • get lê dados
  • post cria dados
  • put/patch atualiza dados
  • delete remove dados
require 'sinatra'

post '/users' do
  'Creating a user'
end

delete '/users/:id' do
  "Deleting user #{params['id']}"
end

Definindo códigos de status

Você controla o código de status HTTP com o auxiliar status.

  • status 404 define o status Não encontrado
  • status 201 indica um recurso criado
  • O padrão é 200 OK
require 'sinatra'

get '/missing' do
  status 404
  'Not found'
end

Configuração com set

O Sinatra é configurado com set, enable e disable.

  • set :port, 8080 altera a porta de escuta
  • set :bind, '0.0.0.0' aceita conexões externas
  • enable :logging ativa os registros de requisições
require 'sinatra'

set :port, 8080
set :bind, '0.0.0.0'

get '/' do
  'Configured app'
end

Filtros 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 params e os cabeçalhos da resposta
require 'sinatra'

before do
  content_type :json
end

get '/' do
  '{"ok": true}'
end

Aplicaçõ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'].call

Verificaçã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, set e before para 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

  1. Fundamentos do Sinatra
  2. Rotas e parâmetros
  3. APIs JSON
  4. Middleware e Rack
← Voltar para Ruby Academy