0Pricing
Ruby Academy · Lekcja

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!'
end

Instalowanie 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, put i delete odwzorowują metody HTTP
  • Ostatnie wyrażenie w bloku jest wysyłane do klienta
require 'sinatra'

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

get '/bye' do
  'Goodbye!'
end

Zwracanie 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>'
end

Modelowanie 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.

  • get odczytuje dane
  • post tworzy dane
  • put/patch aktualizuje dane
  • delete usuwa dane
require 'sinatra'

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

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

Ustawianie kodów statusu

Kod statusu HTTP można kontrolować za pomocą helpera status.

  • status 404 ustawia status „Nie znaleziono”
  • status 201 sygnalizuje utworzenie zasobu
  • Domyślnie ustawiany jest status 200 OK
require 'sinatra'

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

Konfiguracja za pomocą set

Sinatrę konfiguruje się za pomocą set, enable i disable.

  • set :port, 8080 zmienia port nasłuchiwania
  • set :bind, '0.0.0.0' akceptuje połączenia zewnętrzne
  • enable :logging włącza logi żądań
require 'sinatra'

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

get '/' do
  'Configured app'
end

Filtry 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ć params oraz nagłówki odpowiedzi
require 'sinatra'

before do
  content_type :json
end

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

Aplikacje 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'].call

Szybki 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, set i before
  • 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

  1. Podstawy Sinatry
  2. Trasy i parametry
  3. API JSON
  4. Middleware i Rack
← Powrót do Ruby Academy