Ruby Academy · Lektion

Grunderna i Sinatra

Lätta webbappar.

Lektion 1 av 413 steg

Grunderna i Sinatra är en gratis lektion i Ruby Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Ruby Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad är Sinatra?

Sinatra är en lättviktig DSL för att bygga webbapplikationer i Ruby med minimal ansträngning.

  • Inga tunga konventioner som i Rails
  • Definiera routes direkt i en enda fil
  • Perfekt för små appar, API:er och prototyper

Ni beskriver HTTP-verb och sökvägar och returnerar en svarskropp.

require 'sinatra'

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

Installera Sinatra

Sinatra är en gem. Ni installerar den med kommandot gem eller via en Gemfile.

  • gem install sinatra
  • Eller lägg till gem 'sinatra' i en Gemfile och kör bundle install

Starta appen med ruby app.rb. Som standard körs den på port 4567.

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

Er första route

En route kopplar ihop ett HTTP-verb med en URL-sökväg och ett block. Blockets returvärde blir svarskroppen.

  • get, post, put och delete motsvarar HTTP-metoder
  • Det sista uttrycket i blocket skickas till klienten
require 'sinatra'

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

get '/bye' do
  'Goodbye!'
end

Returnera HTML

Eftersom returvärdet bara är en sträng kan ni returnera rå HTML direkt.

  • Användbart för snabba sidor utan en mallmotor
  • För riktiga appar bör ni föredra ERB- eller HAML-vyer
require 'sinatra'

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

Modellera ett svar i ren Ruby

Innan HTTP kopplas in kan ni modellera vad en handler returnerar med en vanlig metod. Det är den logik som en route skulle anropa.

  • Håll affärslogiken utanför route-block
  • Gör koden testbar utan en server
def greeting(name)
  "Hello, #{name}!"
end

puts greeting('Sinatra')

HTTP-verb

Sinatra stöder alla vanliga HTTP-verb som routemetoder.

  • get läser data
  • post skapar data
  • put/patch uppdaterar data
  • delete tar bort data
require 'sinatra'

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

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

Ange statuskoder

Ni styr HTTP-statuskoden med hjälpmetoden status.

  • status 404 anger Not Found
  • status 201 signalerar att en resurs har skapats
  • Standardvärdet är 200 OK
require 'sinatra'

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

Konfiguration med set

Sinatra konfigureras med set, enable och disable.

  • set :port, 8080 ändrar porten som appen lyssnar på
  • set :bind, '0.0.0.0' accepterar externa anslutningar
  • enable :logging aktiverar begärandeloggar
require 'sinatra'

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

get '/' do
  'Configured app'
end

before-filter

Ett before-filter körs före varje matchande request. Det passar bra för förberedelser som autentisering eller innehållshuvuden.

  • Körs i samma kontext som routes
  • Kan läsa och ändra params och svarshuvuden
require 'sinatra'

before do
  content_type :json
end

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

Modulära appar

För större projekt använder ni modulär stil genom att skapa en underklass av Sinatra::Base.

  • Håller flera appar åtskilda
  • Är enklare att montera under Rack
  • Anropa run! för att starta den manuellt
require 'sinatra/base'

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

MyApp.run!

Simulera en router lokalt

Ni kan efterlikna Sinatras routinglogik med en enkel hash-baserad dispatcher för att förstå konceptet.

  • Nycklarna är sökvägar och värdena är handler-procs
  • Uppslagningen returnerar svarskroppen
routes = {
  '/' => -> { 'Home' },
  '/about' => -> { 'About us' }
}

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

Snabbtest

Testa er förståelse av Sinatras grunder.

Sammanfattning

Ni har lärt er grunderna i Sinatra:

  • Sinatra är en lättviktig webb-DSL som installeras som en gem
  • Routes kopplar ihop ett HTTP-verb med en sökväg och ett block
  • Blockets returvärde är svarskroppen
  • Använd status, set och before-filter för styrning
  • Modulära appar skapar underklasser av Sinatra::Base

Därefter hanterar ni dynamiska routes och params.

Gratis att börja

Lär dig Ruby med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
29
Lektioner
109

Vanliga frågor

Är lektionen ”Grunderna i Sinatra” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Ruby Academy, inklusive ”Grunderna i Sinatra”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Ruby Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Grunderna i Sinatra”?

Lätta webbappar. Ni övar på Ruby Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Ruby Academy?

Du behöver inga förkunskaper. Utbildningen i Ruby Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Grunderna i Sinatra”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Ruby Academy-lektionen?

Ja. Varje Ruby Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i Sinatra
  2. Rutter och parametrar
  3. JSON-API:er
  4. Middleware och Rack
← Tillbaka till Ruby Academy