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
![Page 1: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/1.jpg)
Ruby on Rails
Webdevelopment wordt weer leuk!
![Page 2: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/2.jpg)
2006
![Page 3: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/3.jpg)
![Page 4: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/4.jpg)
Ruby
![Page 5: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/5.jpg)
Yukihiro Matsumoto
Japan, 1993 …
![Page 6: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/6.jpg)
Ruby
=
object oriented
![Page 7: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/7.jpg)
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!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/8.jpg)
Ruby
=
interpreted
![Page 9: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/9.jpg)
Ruby
=
dynamic
![Page 10: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/10.jpg)
metaprogramming / DSL’s
![Page 11: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/11.jpg)
metaprogramming / DSL’s
![Page 12: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/12.jpg)
Filosofie achter Rails
![Page 13: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/13.jpg)
productiviteit
![Page 14: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/14.jpg)
happiness
productiviteit
![Page 15: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/15.jpg)
Optimize forprogrammerhappiness
![Page 16: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/16.jpg)
flow
happiness
productiviteit
![Page 17: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/17.jpg)
![Page 18: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/18.jpg)
Flow = Geen besef van tijd en jezelf meer
![Page 19: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/19.jpg)
Flow = Directe feedback
![Page 20: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/20.jpg)
programmeur
![Page 21: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/21.jpg)
![Page 22: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/22.jpg)
programmeur
![Page 23: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/23.jpg)
Rails:
Change = instant
![Page 24: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/24.jpg)
Flow = Balans vaardigheden en uitdaging
![Page 25: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/25.jpg)
![Page 26: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/26.jpg)
Full-stack MVC framework
![Page 27: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/27.jpg)
Principes
Convention over configuration
Less and more beautiful code
DRY
![Page 28: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/28.jpg)
Flow = Intrinsieke motivatie
![Page 29: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/29.jpg)
flow
happiness
productiviteit
![Page 30: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/30.jpg)
Demo
(eindelijk … )
![Page 31: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/31.jpg)
project structuur(conventions over configuration)
![Page 32: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/32.jpg)
Datamodel demo
Commentsbodycreated_at
1 0..*
Articletitlebodycreated_at
![Page 33: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/33.jpg)
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!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/34.jpg)
Rails model
beautiful, agile ...
![Page 35: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/35.jpg)
![Page 36: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/36.jpg)
migrations(tegen de migraine)
![Page 37: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/37.jpg)
unit tests(zijn ingebakken)
![Page 38: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/38.jpg)
Scaffolding
Sagrada Familia (Gaudi), Barcelona
![Page 39: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/39.jpg)
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!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/40.jpg)
validations(when you do it, do it safe)
![Page 41: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/41.jpg)
Ajax(it’s magic)
![Page 42: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/42.jpg)
RESTful webservices(constraints are liberating)
![Page 43: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/43.jpg)
Maar?
![Page 44: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/44.jpg)
Schaalt het?
![Page 45: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/45.jpg)
![Page 46: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/46.jpg)
> 500.000 requests / dag> 100.000 users> Draait op 3 servers
![Page 47: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/47.jpg)
![Page 48: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/48.jpg)
![Page 49: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/49.jpg)
11000 requests / seconde!
Rails schaalt toch niet?
![Page 50: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/50.jpg)
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!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/51.jpg)
Iets voor Wisdom?( ik denk het wel )
![Page 52: Ruby On Rails - webdevelopment wordt weer leuk!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/52.jpg)
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!](https://reader034.vdocuments.mx/reader034/viewer/2022051819/54c43fa64a795967118b470a/html5/thumbnails/53.jpg)
Vragen?