Slide 1

Slide 1 text

Rails Stack 
 Damir Zekić
 @sidonath

Slide 2

Slide 2 text

Od čega je Rails sačinjen? ActionPack ActionView ActionMailer ! ActiveModel ActiveRecord ActiveSupport ActiveJob Railties

Slide 3

Slide 3 text

ActionPack Odgovara na web zahtjeve Routing Definiše kontrolere Vrši prikaz view-ova

Slide 4

Slide 4 text

ActionView Pronalazak template-a View helpers

Slide 5

Slide 5 text

ActionMailer Slanje email-a Procesiranje primljenih email-ova Wrap-a ActionController

Slide 6

Slide 6 text

ActiveModel Definiše interface za modele ActionPack radi s ActiveModel interface-om

Slide 7

Slide 7 text

ActiveRecord Object-relational mapping Bazira se na ActiveModel-u Implementira Active Record pattern

Slide 8

Slide 8 text

ActiveSupport Kolekcija utility i helper klasa Dosta proširenja Ruby jezika Jednostavno se uključuje u svaki Ruby projekat

Slide 9

Slide 9 text

ActiveJob Definiše interface za asinhrono izvršavanje zadataka u pozadini Izvršavanje dugotrajnih zadataka Odgođeno slanje mailova Novi framework u Rails 4.2

Slide 10

Slide 10 text

Railties … to bring them all and in the darkness bind them
 In the Land of Mordor where the Shadows lie Povezuje sve osnovne frameworke zajedno Rails command-line interface (rails komanda)

Slide 11

Slide 11 text

Šta možemo koristiti posebno? ActionPack ActionView ActionMailer ! ActiveModel ActiveRecord ActiveSupport ActiveJob Ratlines

Slide 12

Slide 12 text

Ruby gemovi koje Rails koristi RubyGems Bundler Rack Thor Rake Tilt Sprockets Mail

Slide 13

Slide 13 text

RubyGems gem naredba rubygems.org

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Bundler Specifikacija dependencies-a aplikacije kroz Gemfile Prati verzije gem-ova kroz Gemfile.lock bundle komanda

Slide 16

Slide 16 text

source 'https://rubygems.org' source 'https://rails-assets.org' ruby '2.1.1' ! gem 'rails', '4.1.1' gem 'pg' gem 'haml-rails' gem 'slim-rails' gem 'draper' gem 'simple_form' gem 'reform' gem 'sanitize' gem 'html_truncator', '~> 0.2' gem 'database_cleaner' gem 'dalli', '~> 2.7' gem 'dotenv-rails', '~> 0.11' gem 'cloudinary', '~> 1.0' gem 'attachinary', '~> 1.3' gem 'rack-cache', '~> 1.2' gem 'rack-timeout' gem 'meta-tags', '~> 2.0'

Slide 17

Slide 17 text

Rack Ruby Webserver Interface Suština ActionPack-a Interface potreban da Ruby kôd reaguje na HTTP zahtjeve Kako napraviti Ruby web aplikaciju bez Railsa?

Slide 18

Slide 18 text

run ->(env) { ['200', { 'Content-Type' => 'text/html' }, ['Hello world!'] ] }

Slide 19

Slide 19 text

{"SERVER_SOFTWARE" => "thin 1.6.0 codename Greek Yogurt", "SERVER_NAME" => "localhost", "rack.input" => #>, "rack.version" => [1, 0], "rack.errors" => #>>, "rack.multithread" => false, "rack.multiprocess" => false, "rack.run_once" => false, "REQUEST_METHOD" => "GET", "REQUEST_PATH" => "/favicon.ico", "PATH_INFO" => "/favicon.ico", "REQUEST_URI" => "/favicon.ico", "HTTP_VERSION" => "HTTP/1.1", "HTTP_HOST" => "localhost:9292", "HTTP_CONNECTION" => "keep-alive", "HTTP_ACCEPT" => "*/*", "HTTP_USER_AGENT" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36", "HTTP_ACCEPT_ENCODING" => "gzip,deflate,sdch", "HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.8,de;q=0.6,hr;q=0.4,ru;q=0.2", "HTTP_COOKIE" => "", "GATEWAY_INTERFACE" => "CGI/1.2", "SERVER_PORT" => "9292", "QUERY_STRING" => "", "SERVER_PROTOCOL" => "HTTP/1.1", "rack.url_scheme" => "http", "SCRIPT_NAME" => "", "REMOTE_ADDR" => "127.0.0.1", "async.callback" => #, "async.close" => #}

Slide 20

Slide 20 text

Thor Olakšava kreiranje CLI programa Railties koristi Thor da implementira rails naredbu Parsiranje parametara Automatski ispis informacija o korištenju

Slide 21

Slide 21 text

Rake Ruby Make Razne komponente Rails-a dolaze s vlastitim taskovima Alat za pisanje taskova u Ruby-ju Jednostavno kombinovati taskove određujući zavisnosti

Slide 22

Slide 22 text

Thor vs Rake Pisanje CLI aplikacija Lagano parsiranje argumenata ! ! Pisanje zadataka Lagano kombinovati zadatke

Slide 23

Slide 23 text

Tilt Apstrakcija za korištenje raznih template engine-a Npr. ERB, Haml, Markdown, CoffeeScript, Sass… ActionPack

Slide 24

Slide 24 text

Sprockets Kompajlira i opslužuje statičke assete (JS, CSS) Olakšava kombinovanje asseta (require)

Slide 25

Slide 25 text

Mail Olakšava generisanje, parsiranje i slanje mailova Implementiran u čistom Ruby-ju Koristi Net::SMTP, Net::POP3 isl.