Ruby On Rails - webdevelopment wordt weer leuk!

53
Ruby on Rails Webdevelopment wordt weer leuk!

description

Deze presentatie heb ik een jaar geleden (2007) gegeven om de developers bij Ordina | Wisdom enthousiast te maken voor Ruby on Rails.In het eerste deel ga ik voornamelijk in op de filosofie achter Ruby on Rails: programmer happines :)De demo zit niet in de slides van de presentatie.

Transcript of Ruby On Rails - webdevelopment wordt weer leuk!

Page 1: Ruby On Rails - webdevelopment wordt weer leuk!

Ruby on Rails

Webdevelopment wordt weer leuk!

Page 2: Ruby On Rails - webdevelopment wordt weer leuk!

2006

Page 3: Ruby On Rails - webdevelopment wordt weer leuk!
Page 4: Ruby On Rails - webdevelopment wordt weer leuk!

Ruby

Page 5: Ruby On Rails - webdevelopment wordt weer leuk!

Yukihiro Matsumoto

Japan, 1993 …

Page 6: Ruby On Rails - webdevelopment wordt weer leuk!

Ruby

=

object oriented

Page 7: Ruby On Rails - webdevelopment wordt weer leuk!

Class.class

Time.now - 1.day

5.times {print “Hello world!"}

['toast','cheese', 'wine'].each {

|food| print food.capitalize }

Page 8: Ruby On Rails - webdevelopment wordt weer leuk!

Ruby

=

interpreted

Page 9: Ruby On Rails - webdevelopment wordt weer leuk!

Ruby

=

dynamic

Page 10: Ruby On Rails - webdevelopment wordt weer leuk!

metaprogramming / DSL’s

Page 11: Ruby On Rails - webdevelopment wordt weer leuk!

metaprogramming / DSL’s

Page 12: Ruby On Rails - webdevelopment wordt weer leuk!

Filosofie achter Rails

Page 13: Ruby On Rails - webdevelopment wordt weer leuk!

productiviteit

Page 14: Ruby On Rails - webdevelopment wordt weer leuk!

happiness

productiviteit

Page 15: Ruby On Rails - webdevelopment wordt weer leuk!

Optimize forprogrammerhappiness

Page 16: Ruby On Rails - webdevelopment wordt weer leuk!

flow

happiness

productiviteit

Page 17: Ruby On Rails - webdevelopment wordt weer leuk!
Page 18: Ruby On Rails - webdevelopment wordt weer leuk!

Flow = Geen besef van tijd en jezelf meer

Page 19: Ruby On Rails - webdevelopment wordt weer leuk!

Flow = Directe feedback

Page 20: Ruby On Rails - webdevelopment wordt weer leuk!

programmeur

Page 21: Ruby On Rails - webdevelopment wordt weer leuk!
Page 22: Ruby On Rails - webdevelopment wordt weer leuk!

programmeur

Page 23: Ruby On Rails - webdevelopment wordt weer leuk!

Rails:

Change = instant

Page 24: Ruby On Rails - webdevelopment wordt weer leuk!

Flow = Balans vaardigheden en uitdaging

Page 25: Ruby On Rails - webdevelopment wordt weer leuk!
Page 26: Ruby On Rails - webdevelopment wordt weer leuk!

Full-stack MVC framework

Page 27: Ruby On Rails - webdevelopment wordt weer leuk!

Principes

Convention over configuration

Less and more beautiful code

DRY

Page 28: Ruby On Rails - webdevelopment wordt weer leuk!

Flow = Intrinsieke motivatie

Page 29: Ruby On Rails - webdevelopment wordt weer leuk!

flow

happiness

productiviteit

Page 30: Ruby On Rails - webdevelopment wordt weer leuk!

Demo

(eindelijk … )

Page 31: Ruby On Rails - webdevelopment wordt weer leuk!

project structuur(conventions over configuration)

Page 32: Ruby On Rails - webdevelopment wordt weer leuk!

Datamodel demo

Commentsbodycreated_at

1 0..*

Articletitlebodycreated_at

Page 33: Ruby On Rails - webdevelopment wordt weer leuk!

Java Model (Hibernate)

<hibernate-mapping>

<class name="models.Article" table=“ARTICLES">

<id name="id" column="id" type="java.lang.Long">

<generator class="identity"/>

</id>

<property name=“body " column=“body"/>

<property name=“description“ column=“description"/>

<set name=“comments" table=“COMMENTS”>

<key column="id"/>

<one-to-many class="models.Comments"/>

</set>

</class>

</hibernate-mapping>

Article.hbm.xml

public class Article{

private Long id;

private String title;

private String body;

private Set comments;

public Set getComments() {

return markets;

}

public void setComments(Set comments){

this.comments = comments;

}

// getters en setters van andere

// properties

}

Article.java

+ configuratie (o.a. Hibernate)

Page 34: Ruby On Rails - webdevelopment wordt weer leuk!

Rails model

beautiful, agile ...

Page 35: Ruby On Rails - webdevelopment wordt weer leuk!
Page 36: Ruby On Rails - webdevelopment wordt weer leuk!

migrations(tegen de migraine)

Page 37: Ruby On Rails - webdevelopment wordt weer leuk!

unit tests(zijn ingebakken)

Page 38: Ruby On Rails - webdevelopment wordt weer leuk!

Scaffolding

Sagrada Familia (Gaudi), Barcelona

Page 39: Ruby On Rails - webdevelopment wordt weer leuk!

Controller

articles_controller.rb:

class ArticlesController < ApplicationController

def show

@article = Article.find(params[:id])

end

end

URL

http://localhost:3000/articles/show/2

View

app/views/articles/show.rhtml

Page 40: Ruby On Rails - webdevelopment wordt weer leuk!

validations(when you do it, do it safe)

Page 41: Ruby On Rails - webdevelopment wordt weer leuk!

Ajax(it’s magic)

Page 42: Ruby On Rails - webdevelopment wordt weer leuk!

RESTful webservices(constraints are liberating)

Page 43: Ruby On Rails - webdevelopment wordt weer leuk!

Maar?

Page 44: Ruby On Rails - webdevelopment wordt weer leuk!

Schaalt het?

Page 45: Ruby On Rails - webdevelopment wordt weer leuk!
Page 46: Ruby On Rails - webdevelopment wordt weer leuk!

> 500.000 requests / dag> 100.000 users> Draait op 3 servers

Page 47: Ruby On Rails - webdevelopment wordt weer leuk!
Page 48: Ruby On Rails - webdevelopment wordt weer leuk!
Page 49: Ruby On Rails - webdevelopment wordt weer leuk!

11000 requests / seconde!

Rails schaalt toch niet?

Page 50: Ruby On Rails - webdevelopment wordt weer leuk!

11000 requests / seconde!

Niet out-of-the box 11000 request / seconde, maar wel met enige aanpassingen!

Page 51: Ruby On Rails - webdevelopment wordt weer leuk!

Iets voor Wisdom?( ik denk het wel )

Page 52: Ruby On Rails - webdevelopment wordt weer leuk!

Rails sweetspots (volgens de heren @ThoughtWorks …)

• Web 2.0 applications that make use of REST and/or AJAX designs

• Small to medium web-based applications with aggressive time-to-market goals

• Low-cost internal prototypes and pilot applications• So-called "soft layer" APIs on hardened transactional systems

Page 53: Ruby On Rails - webdevelopment wordt weer leuk!

Vragen?