Grunderna i Sinatra
Lätta webbappar.
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!'
endInstallera 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örbundle 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,putochdeletemotsvarar HTTP-metoder- Det sista uttrycket i blocket skickas till klienten
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endReturnera 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>'
endModellera 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.
getläser datapostskapar dataput/patchuppdaterar datadeletetar bort data
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endAnge statuskoder
Ni styr HTTP-statuskoden med hjälpmetoden status.
status 404anger Not Foundstatus 201signalerar att en resurs har skapats- Standardvärdet är 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endKonfiguration 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 anslutningarenable :loggingaktiverar begärandeloggar
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endbefore-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
paramsoch svarshuvuden
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endModulä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'].callSnabbtest
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,setochbefore-filter för styrning - Modulära appar skapar underklasser av
Sinatra::Base
Därefter hanterar ni dynamiska routes och params.
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
- Grunderna i Sinatra
- Rutter och parametrar
- JSON-API:er
- Middleware och Rack