0Pricing
Ruby Academy · Lezione

Basi di Sinatra

Applicazioni web leggere

Basi di Sinatra è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.

Che cos'è Sinatra

Sinatra è una DSL leggera per creare applicazioni web in Ruby con il minimo sforzo.

  • Nessuna convenzione complessa come in Rails
  • Definizione diretta delle route in un unico file
  • Ideale per piccole app, API e prototipi

Descriva i verbi HTTP e i percorsi, quindi restituisca il corpo della risposta.

require 'sinatra'

get '/' do
  'Hello from Sinatra!'
end

Installazione di Sinatra

Sinatra è una gem. La installi con il comando gem oppure tramite un Gemfile.

  • gem install sinatra
  • In alternativa, aggiunga gem 'sinatra' a un Gemfile ed esegua bundle install

Esegua l'app con ruby app.rb: per impostazione predefinita, il servizio sarà disponibile sulla porta 4567.

# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'

La prima route

Una route associa un verbo HTTP a un percorso URL e a un blocco. Il valore restituito dal blocco diventa il corpo della risposta.

  • get, post, put, delete corrispondono ai metodi HTTP
  • L'ultima espressione del blocco viene inviata al client
require 'sinatra'

get '/hello' do
  'Hello, world!'
end

get '/bye' do
  'Goodbye!'
end

Restituire HTML

Poiché il valore restituito è semplicemente una stringa, può restituire direttamente HTML grezzo.

  • Utile per pagine rapide senza un motore di template
  • Per le applicazioni reali, preferisca le view ERB o HAML
require 'sinatra'

get '/' do
  '<h1>Welcome</h1><p>This is my Sinatra app.</p>'
end

Modellare una risposta in Ruby puro

Prima di collegare HTTP, può modellare ciò che restituisce un handler usando un semplice metodo. Questa è la logica che una route chiamerebbe.

  • Mantenga la logica di business fuori dai blocchi delle route
  • Rende il codice testabile senza un server
def greeting(name)
  "Hello, #{name}!"
end

puts greeting('Sinatra')

Verbi HTTP

Sinatra supporta tutti i comuni verbi HTTP come metodi delle route.

  • get legge i dati
  • post crea i dati
  • put/patch aggiorna i dati
  • delete rimuove i dati
require 'sinatra'

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

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

Impostare i codici di stato

Controlli il codice di stato HTTP con l'helper status.

  • status 404 imposta lo stato Non trovato
  • status 201 segnala una risorsa creata
  • Il valore predefinito è 200 OK
require 'sinatra'

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

Configurazione con set

Sinatra si configura con set, enable e disable.

  • set :port, 8080 modifica la porta di ascolto
  • set :bind, '0.0.0.0' accetta connessioni esterne
  • enable :logging attiva i log delle richieste
require 'sinatra'

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

get '/' do
  'Configured app'
end

Filtri before

Un before filter viene eseguito prima di ogni richiesta corrispondente. È ideale per operazioni di preparazione come l'autenticazione o l'impostazione delle intestazioni del contenuto.

  • Viene eseguito nello stesso contesto delle route
  • Può leggere e modificare params e le intestazioni della risposta
require 'sinatra'

before do
  content_type :json
end

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

App modulari

Per i progetti più grandi, utilizzi lo stile modulare creando una sottoclasse di Sinatra::Base.

  • Mantiene isolate più app
  • È più facile da montare sotto Rack
  • Chiami run! per avviarla manualmente
require 'sinatra/base'

class MyApp < Sinatra::Base
  get '/' do
    'Modular Sinatra'
  end
end

MyApp.run!

Simulare localmente un router

Può imitare la logica di routing di Sinatra con un semplice dispatcher basato su hash per comprendere il concetto.

  • Le chiavi sono percorsi e i valori sono proc che fungono da handler
  • La ricerca restituisce il corpo della risposta
routes = {
  '/' => -> { 'Home' },
  '/about' => -> { 'About us' }
}

puts routes['/'].call
puts routes['/about'].call

Verifica rapida

Verifichi la Sua comprensione delle basi di Sinatra.

Riepilogo

Ha imparato gli elementi essenziali di Sinatra:

  • Sinatra è una DSL web leggera, installata come gem
  • Le route associano un verbo HTTP a un percorso e a un blocco
  • Il valore restituito dal blocco è il corpo della risposta
  • Utilizzi gli helper status, set e i filtri before per controllare il comportamento
  • Le app modulari creano sottoclassi di Sinatra::Base

Successivamente, gestirà le route dinamiche e i params.

Domande Frequenti

La lezione «Basi di Sinatra» è gratuita?

Sì — il testo completo di «Basi di Sinatra» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.

Cosa imparerò in «Basi di Sinatra»?

Applicazioni web leggere Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Ruby Academy?

Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Basi di Sinatra»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Ruby Academy?

Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Basi di Sinatra
  2. Route e parametri
  3. API JSON
  4. Middleware e Rack
← Torna a Ruby Academy