Podstawy Sinatry
Lekkie aplikacje internetowe
Podstawy Sinatry to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Czym jest Sinatra?
Sinatra to lekki DSL do tworzenia aplikacji internetowych w Ruby przy minimalnym nakładzie pracy.
- Brak rozbudowanych konwencji, takich jak w Rails
- Bezpośrednie definiowanie tras w jednym pliku
- Idealne rozwiązanie dla małych aplikacji, API i prototypów
Opisuje się czasowniki HTTP i ścieżki, a następnie zwraca treść odpowiedzi.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endInstalowanie Sinatry
Sinatra jest gemem. Instaluje się ją za pomocą polecenia gem lub przez plik Gemfile.
gem install sinatra- Można też dodać
gem 'sinatra'do pliku Gemfile i uruchomićbundle install
Aplikację uruchamia się za pomocą ruby app.rb; domyślnie udostępnia ona aplikację na porcie 4567.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'Pierwsza trasa
Trasa łączy czasownik HTTP ze ścieżką URL i blokiem. Wartość zwracana przez blok staje się treścią odpowiedzi.
get,post,putideleteodwzorowują metody HTTP- Ostatnie wyrażenie w bloku jest wysyłane do klienta
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endZwracanie kodu HTML
Ponieważ wartość zwracana jest zwykłym ciągiem znaków, można bezpośrednio zwrócić surowy HTML.
- Przydatne w przypadku szybkich stron bez silnika szablonów
- W rzeczywistych aplikacjach należy preferować widoki ERB lub HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endModelowanie odpowiedzi w czystym Ruby
Przed podłączeniem HTTP można zamodelować to, co zwraca obsługa żądania, za pomocą zwykłej metody. Jest to logika, którą wywoływałaby trasa.
- Logikę biznesową należy trzymać poza blokami tras
- Dzięki temu kod można testować bez uruchamiania serwera
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')Metody HTTP
Sinatra obsługuje wszystkie popularne metody HTTP jako metody tras.
getodczytuje daneposttworzy daneput/patchaktualizuje danedeleteusuwa dane
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endUstawianie kodów statusu
Kod statusu HTTP można kontrolować za pomocą helpera status.
status 404ustawia status „Nie znaleziono”status 201sygnalizuje utworzenie zasobu- Domyślnie ustawiany jest status 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endKonfiguracja za pomocą set
Sinatrę konfiguruje się za pomocą set, enable i disable.
set :port, 8080zmienia port nasłuchiwaniaset :bind, '0.0.0.0'akceptuje połączenia zewnętrzneenable :loggingwłącza logi żądań
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endFiltry before
Filtr before jest uruchamiany przed każdym pasującym żądaniem. Idealnie nadaje się do czynności przygotowawczych, takich jak uwierzytelnianie lub ustawianie nagłówków treści.
- Działa w tym samym kontekście co trasy
- Może odczytywać i modyfikować
paramsoraz nagłówki odpowiedzi
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endAplikacje modularne
W większych projektach należy używać stylu modularnego, tworząc podklasę Sinatra::Base.
- Utrzymuje wiele aplikacji w izolacji
- Ułatwia osadzanie aplikacji w Rack
- Należy wywołać
run!, aby uruchomić ją ręcznie
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!Lokalna symulacja routera
Logikę routingu Sinatry można odwzorować za pomocą prostego dyspozytora opartego na hashu, aby lepiej zrozumieć tę koncepcję.
- Kluczami są ścieżki, a wartościami procedury obsługi
- Wyszukanie zwraca treść odpowiedzi
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callSzybki test
Proszę sprawdzić swoją znajomość podstaw Sinatry.
Podsumowanie
Nauczył się Pan/Pani podstaw Sinatry:
- Sinatra to lekki internetowy DSL instalowany jako gem
- Trasy łączą czasownik HTTP ze ścieżką i blokiem
- Wartość zwracana przez blok jest treścią odpowiedzi
- Do sterowania działaniem należy używać filtrów
status,setibefore - Aplikacje modularne tworzą podklasę
Sinatra::Base
Następnie zajmiemy się dynamicznymi trasami i params.
Często zadawane pytania
Czy lekcja „Podstawy Sinatry” jest bezpłatna?
Tak — pełny tekst „Podstawy Sinatry” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Podstawy Sinatry”?
Lekkie aplikacje internetowe Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Podstawy Sinatry”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy Sinatry
- Trasy i parametry
- API JSON
- Middleware i Rack