Conceptos básicos de Sinatra
Aplicaciones web ligeras
Conceptos básicos de Sinatra es una lección gratuita de Ruby Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Ruby Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Ruby Academy incluye 4 lecciones en total.
¿Qué es Sinatra?
Sinatra es un DSL ligero para crear aplicaciones web en Ruby con un esfuerzo mínimo.
- No impone convenciones pesadas como Rails
- Permite definir rutas directamente en un solo archivo
- Es perfecto para aplicaciones pequeñas, API y prototipos
Usted describe los verbos HTTP y las rutas, y devuelve un cuerpo de respuesta.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endInstalación de Sinatra
Sinatra es una gem. Puede instalarla con el comando gem o mediante un Gemfile.
gem install sinatra- O añada
gem 'sinatra'a un Gemfile y ejecutebundle install
Ejecute su aplicación con ruby app.rb; de forma predeterminada, se sirve en el puerto 4567.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'Su primera ruta
Una ruta vincula un verbo HTTP con una ruta URL y un bloque. El valor devuelto por el bloque se convierte en el cuerpo de la respuesta.
get,post,putydeletecorresponden a métodos HTTP- La última expresión del bloque se envía al cliente
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endDevolver HTML
Como el valor devuelto es simplemente una cadena, puede devolver HTML sin procesar directamente.
- Es útil para crear rápidamente páginas sin un motor de plantillas
- Para aplicaciones reales, prefiera vistas ERB o HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endModelar una respuesta en Ruby puro
Antes de conectar HTTP, puede modelar lo que devuelve un controlador mediante un método sencillo. Esta es la lógica que llamaría una ruta.
- Mantenga la lógica de negocio fuera de los bloques de ruta
- Esto permite probar el código sin un servidor
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')Verbos HTTP
Sinatra admite todos los verbos HTTP habituales como métodos de ruta.
getlee datospostcrea datosput/patchactualiza datosdeleteelimina datos
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endEstablecer códigos de estado
Puede controlar el código de estado HTTP con el helper status.
status 404establece No encontradostatus 201indica que se ha creado un recurso- El valor predeterminado es 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endConfiguración con set
Sinatra se configura con set, enable y disable.
set :port, 8080cambia el puerto de escuchaset :bind, '0.0.0.0'acepta conexiones externasenable :loggingactiva los registros de solicitudes
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endFiltros before
Un filtro before se ejecuta antes de cada solicitud coincidente. Es ideal para tareas de preparación, como la autenticación o la configuración de encabezados de contenido.
- Se ejecuta en el mismo contexto que las rutas
- Puede leer y modificar
paramsy los encabezados de respuesta
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endAplicaciones modulares
Para proyectos más grandes, utilice el estilo modular mediante una subclase de Sinatra::Base.
- Mantiene aisladas varias aplicaciones
- Facilita el montaje en Rack
- Llame a
run!para iniciarla manualmente
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!Simular un enrutador localmente
Puede imitar la lógica de enrutamiento de Sinatra con un dispatcher sencillo basado en un hash para comprender el concepto.
- Las claves son rutas y los valores son procs que actúan como controladores
- La búsqueda devuelve el cuerpo de la respuesta
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callComprobación rápida
Compruebe su comprensión de los conceptos básicos de Sinatra.
Resumen
Aprendió los conceptos esenciales de Sinatra:
- Sinatra es un DSL web ligero que se instala como una gem
- Las rutas vinculan un verbo HTTP con una ruta y un bloque
- El valor devuelto por el bloque es el cuerpo de la respuesta
- Utilice
status,sety los filtrosbeforepara controlar el comportamiento - Las aplicaciones modulares heredan de
Sinatra::Base
A continuación, gestionará rutas dinámicas y params.
Preguntas frecuentes
¿La lección «Conceptos básicos de Sinatra» es gratis?
Sí — el texto completo de «Conceptos básicos de Sinatra» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Ruby Academy, actualiza a CoddyKit PRO. El curso de Ruby Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Conceptos básicos de Sinatra»?
Aplicaciones web ligeras Practicas Ruby Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Ruby Academy?
No se requiere experiencia previa. Ruby Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Conceptos básicos de Sinatra»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Ruby Academy?
Sí. Cada lección de Ruby Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Conceptos básicos de Sinatra
- Rutas y parámetros
- APIs JSON
- Middleware y Rack