Ruby on Rails pro zkušené

Děláte weby v PHP, Javě, nebo Pythonu a zajímá vás, jak na to v Ruby on Rails? Pak je tento jednodenní kurz právě pro vás. Naprogramujeme jednoduchý blog a projdeme Rails od A až po Z.

1 den | | ruby_on_rails web expert

Právě teď nejsou naplánované žádné termíny školení 'Ruby on Rails pro zkušené', ale rád nějaký připravím. Stačí napsat!


Sinatra & Rack

Začneme trochu zeširoka a základy si vysvětlíme na frameworku Sinatra, jednodušším bratříčkovi Rails. Napíšeme stránku s formulářem a řekneme si, co to je Rack rozhraní.

 get '/' do
   name = params[:name] || 'World'
   markdown "# Hello #{name}"
  end 

Úvod do Rails

Pak už se do toho rovnou pustíme a vygnerujeme si naši první Rails aplikaci. Vysvětlíme si základní principy Rails a adresářovou strukturu. Jaký je rozdíl mezi módy development, test a production?

$ rails new blog
$ rails server 

Routing

V Rails se pod slovem routing (směrování) rozumí mapování jednotlivých internetových adres na šablony a další výkonné kousky kódu. Podíváme se i na složitější příklady a zkusíme si udělat jednoduché REST API.

root to: 'home#index'
post '/kalendar/:event_id',
     to: 'participants#create',
     as: :participants 

Šablony

Šablony jsou nutností každého webového frameworku. V Ruby je vždy dostupný formát ERB (Embedded RuBy), my se podíváme i na jeho alternativy, jako je Slim.

#content
  h2 Obsah školení
  = render "events/syllabus/#{@event.topic}" 

Kontroler

Kontrolery zpracovávají HTTP požadavky, posílají zprávy modelu a rozhodují, které šablony se vykreslí nebo na kterou stránku přesměrovat uživatele. Ukážeme si, jak kontroler vygenerovat, filtrovat požadavky, ošetřit příchozí parametry a další běžné věci.

class EventsController < ApplicationController
  def index
    @events = Event.future.all
  end
  # ...
end 

Model = ActiveRecord + SQL

ActiveRecord je návrhový vzor a také název knihovny, která se v Rails používá pro přístup k SQL databázi. Ušetří nám práci při psaní SQL dotazů a postará se i o kešování a lazy-loading.

Event.where("starts_at > ?", Time.now).
  order(:created_at)
  limit(5).
  update_all(ends_at: 5.days.from_now) 

Rails Assets Pipeline

Obrázky, CSS a JS soubory jsou v Rails pod kontrolou Sprockets. Co tato knihovna umí a proč je dobré se s ní hned ze začátku usmířit? Řekneme si také o frameworcích Sass a Coffeescript, které Rails používají.

a {
  color: white;
  &:hover { color: $secondary; };
} 

101 Bezpečnosti v Rails

Krátce zabrousíme i k tématu bezpečnosti, protože Rails se snaží být 'secure by default'. Povíme si, jak funguje metoda html_safe? a jak nás chrání proti cross-site scriptingu. Podíváme se i na to, jak předejít SQL injection útokům.

# FIXME: takto ne!
def bold_name
 name = params[:username]
 "<b>#{name}</b>".html_safe
end 

Školení je vždy ušito na míru účastníkům. Něco vynecháme, něco přidáme a nakonec protřepeme a zamícháme. Ruby ale vždy zůstane.