Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Francesco [email protected]

Slide 3

Slide 3 text

Cuba (‛ƅ㱼ƅ)‛ Ruby microframework for web development.


Slide 4

Slide 4 text

ʕ•ᴥ•ʔ ! • Small. • Focused. • Simple.
 • Stable. • Rack.
 • Fast.

Slide 5

Slide 5 text

require "cuba"! ! Cuba.define do! on "home" do! res.write("Hello Cuba")! end! end

Slide 6

Slide 6 text

Rules

Slide 7

Slide 7 text

Cuba.define do! on "home" do # PATH == "/home"! ! res.write("Hello Cuba")! end! end

Slide 8

Slide 8 text

Cuba.define do! on "home" do # PATH == "/home"! ! res.write("Hello Cuba")! end! ! on "about" do # PATH == "/about"! ! res.write("About us”)! end! end

Slide 9

Slide 9 text

Captures

Slide 10

Slide 10 text

Cuba.define do! on "hello/:name" do |name|! ! res.write("Hello #{ name }")! end! end! ! # /hello/frodsan => Hello frodsan

Slide 11

Slide 11 text

Matchers

Slide 12

Slide 12 text

Cuba.define do! on /hello\/(^[a-zA-Z]+$)/ do |name|! ! res.write("Hello #{ name }")! end! end! ! # /hello/frodsan => Hello frodsan! # /hello/123 =>

Slide 13

Slide 13 text

Cuba.define do! on :name do |name|! ! res.write("Hello #{ name }")! end! end! ! # /frodsan => Hello frodsan! # /123 => Hello 123

Slide 14

Slide 14 text

Cuba.define do! # Any expression that! # evaluates to `true`.! on (*) do! ! res.write("Hello Cuba")! end! end

Slide 15

Slide 15 text

Cuba.define do! # Any expression that! # evaluates to `true`.! on true do! ! res.write("Hello Cuba")! end! end

Slide 16

Slide 16 text

Cuba.define do! on false do! ! res.write("⊙﹏⊙")! end! ! on true do! ! res.write("the winner")! end! end

Slide 17

Slide 17 text

Cuba.define do! on authenticated? do! # . . .! end! ! on true do! ! res.status = 401! ! res.write("Not authorized")! end! end

Slide 18

Slide 18 text

Nested Blocks

Slide 19

Slide 19 text

Cuba.define do! on "posts" do! # /posts/new! on "new" do! # . . .! end! ! ! ! # /posts/mypost! on :slug do |slug|! ! # . . .! end! end! end

Slide 20

Slide 20 text

404 (Else)

Slide 21

Slide 21 text

Cuba.define do! on "posts" do! on "new" do! ! # . . .! ! # on true do! on default do! res.status = 404! res.write("Not Found")! end! end! end

Slide 22

Slide 22 text

Helpers

Slide 23

Slide 23 text

Cuba.define do! on "posts" do! on get do! # METHOD == GET! end! ! on post do! on param("post") do |post|! end! end! end! end

Slide 24

Slide 24 text

Composition

Slide 25

Slide 25 text

class Users < Cuba
 define do! on "posts" do! on "new" do! ! # . . .! end! ! on :slug do |slug|! ! # . . .! end! end! end! end

Slide 26

Slide 26 text

Cuba.define do! on authenticated? do! run(Users)! end! ! on default do! ! res.status = 401! ! res.write("Not authorized")! end! end

Slide 27

Slide 27 text

Stack

Slide 28

Slide 28 text

ʕ•ᴥ•ʔ ! • hache • mote • mote-render • malone
 • ohm • ost • rack-protection • requests • scrivener
 • shield

Slide 29

Slide 29 text

! on "signup" do! on post, param("user") do |params|! signup = Signup.new(params)! ! on signup.valid? do! user = User.create(params)! authenticate(user)! ! res.redirect("/dashboard")! end! ! on default do! end! end! end!

Slide 30

Slide 30 text

! on "posts" do! on post, param("post") do |params|! end! ! on :id do |id|! post = Post[id]! ! on default do! render("post", post: post)! end! end! ! on default do! render("posts")! end! end!

Slide 31

Slide 31 text

theguidetocuba.io A Getting Started guide (WIP)


Slide 32

Slide 32 text

github.com/punchgirls/job_board/ An Open Source application.


Slide 33

Slide 33 text

cuba.is Cuba’s website.


Slide 34

Slide 34 text

thx <3