Slide 1

Slide 1 text

Ruby (on Rails) PHPBenelux @ Nucleus

Slide 2

Slide 2 text

• @joren • Openminds • ArrrrCamp

Slide 3

Slide 3 text

Ruby

Slide 4

Slide 4 text

History

Slide 5

Slide 5 text

History • 1995 • Yukihiro Matsumoto (aka Matz) • Philosophy: Designed for programmer productivity and fun.

Slide 6

Slide 6 text

History • Inspired by Perl, Smalltalk, Lisp, Python • “I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language.”

Slide 7

Slide 7 text

Syntax

Slide 8

Slide 8 text

Dynamic typing

Slide 9

Slide 9 text

Strong typing

Slide 10

Slide 10 text

Duck typing • it walks like a duck; • it talks like a duck; • it will probably be a duck.

Slide 11

Slide 11 text

Objects

Slide 12

Slide 12 text

Objects • Everything is an object • Defined by its BEHAVIOUR

Slide 13

Slide 13 text

Objects Even primitive types

Slide 14

Slide 14 text

Classes - Modules • can be instantiated • object creation • can inherit • cannot be included • can *not* be instantiated • mixin facility, namespace • no inheritance • can be included in classes and modules

Slide 15

Slide 15 text

Classes - Modules

Slide 16

Slide 16 text

Dynamic re-open everything

Slide 17

Slide 17 text

Dynamic

Slide 18

Slide 18 text

Dynamic

Slide 19

Slide 19 text

Variables

Slide 20

Slide 20 text

Methods

Slide 21

Slide 21 text

Methods

Slide 22

Slide 22 text

Strings & numbers

Slide 23

Slide 23 text

Arrays

Slide 24

Slide 24 text

Hashes

Slide 25

Slide 25 text

Loops

Slide 26

Slide 26 text

Conditions

Slide 27

Slide 27 text

Stdlib abbrev base64 benchmark bigdecimal cgi cmath coverage csv curses date dbm debug delegate digest dl drb e2mmap English erb etc extmk fcntl fiddle fileutils find forwardable gdbm getoptlong gserver iconv io/console io/nonblock io/wait ipaddr irb json logger mathn matrix minitest minitest/benchmark minitest/spec mkmf monitor mutex_m net/ftp net/ http net/imap net/pop net/smtp net/telnet nkf objspace observer open- uri open3 openssl optparse ostruct pathname pp prettyprint prime profile profiler pstore psych pty racc racc/parser rake rdoc readline resolv resolv-replace rexml rinda ripper rss rubygems scanf sdbm securerandom set shell shellwords singleton socket stringio strscan sync syslog tempfile test/unit thread thwait time timeout tk tmpdir tracer tsort un uri weakref webrick win32ole xmlrpc yaml zlib

Slide 28

Slide 28 text

Gems • + 65.000 gems • little code libraries/modules • gem install twitter

Slide 29

Slide 29 text

Rails just another gem

Slide 30

Slide 30 text

History • 37 Signals (Basecamp) • David Heinemeier Hansson (aka DHH) • July 2004

Slide 31

Slide 31 text

MVC

Slide 32

Slide 32 text

Models • persintence-layer • validations • data manipulation methods • define relations • CRUD

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Views • templates • html (erb, haml, slim), xml, pdf, json • custom languages

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Controllers • get, post, patch, put, delete,… • parameter parsing • session / cookie management

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

REST

Slide 40

Slide 40 text

generators • rails generate model Product name description:text • rails generate controller products • rails generate mailer OrderMailer • rails generate migration AddActiveToProducts active:boolean • rails generate scaffold products • ‘rails generate’ to view all possibilities

Slide 41

Slide 41 text

Migrations • rake db:migrate • rake db:migrate:rollback • rake db:migrate:redo

Slide 42

Slide 42 text

Migrations

Slide 43

Slide 43 text

$ rake • rake is to ruby what make is to C • run little ruby scripts • often used for cronjobs • rake -T

Slide 44

Slide 44 text

Convention Over Configuration

Slide 45

Slide 45 text

Sinatra

Slide 46

Slide 46 text

Sinatra

Slide 47

Slide 47 text

Development

Slide 48

Slide 48 text

Ruby Version Management • chruby • rvm

Slide 49

Slide 49 text

Bundler • gem version management • bundle install rails • bundle update rails • bundle exec rails console • Gemfile & Gemfile.lock

Slide 50

Slide 50 text

Bundler

Slide 51

Slide 51 text

Tests • mini_test, unit_test • RSpec • cucumber • capybara

Slide 52

Slide 52 text

Run it • Local • bundle exec rails server • pow.cx

Slide 53

Slide 53 text

Run it • Online • rack: unicorn, puma, passenger

Slide 54

Slide 54 text

Deploy • mina • capistrano • cap deploy

Slide 55

Slide 55 text

Community & Learn

Slide 56

Slide 56 text

Ruby Tapas

Slide 57

Slide 57 text

RailsCasts

Slide 58

Slide 58 text

learn.thoughtbot.com/rails

Slide 59

Slide 59 text

Ruby Rogues (+parley)

Slide 60

Slide 60 text

Visit a conference (like ArrrrCamp)

Slide 61

Slide 61 text

rails girls <3

Slide 62

Slide 62 text

So…

Slide 63

Slide 63 text

Ruby makes me happy

Slide 64

Slide 64 text

Tell a story

Slide 65

Slide 65 text

Thanks! Let’s have a drink.