pourquoi ruby et rails déchirent

50
POURQUOI RUBY ET RAILS DÉCHIRENT ! Par Nicolas Ledez

Upload: nicolas-ledez

Post on 16-May-2015

257 views

Category:

Technology


0 download

DESCRIPTION

Et bien il faut lire la présentation !

TRANSCRIPT

Page 1: Pourquoi ruby et rails déchirent

POURQUOI RUBY ET RAILS DÉCHIRENT !

Par Nicolas Ledez

Page 2: Pourquoi ruby et rails déchirent
Page 3: Pourquoi ruby et rails déchirent

RUBY 1/3

• Interprété

• Objet

• Multiparadigme

• Multiplateforme

• Libre, gratuit, etc

Page 4: Pourquoi ruby et rails déchirent

RUBY 2/3

• Ramasse-miettes

• Gestion d'exceptions

• Expressions rationnelles (Regexp)

• Blocs

• Extensions en C

Page 5: Pourquoi ruby et rails déchirent

RUBY 3/3

• Héritage simple

• Mixin -> « héritage multiple »

• Réflexion

• Crée en 1995

Page 6: Pourquoi ruby et rails déchirent

VIRTUAL MACHINE

• Matz's Ruby Interpreter – Cruby

• JRuby

• Rubinius

• MacRuby

• mruby

• RubyMotion

Page 7: Pourquoi ruby et rails déchirent

AUTOUR DU LANGAGE

Page 8: Pourquoi ruby et rails déchirent

POUR LES DEV

• Rspec, Cucumber, Minitest, ...

• HAML, SASS, Compass, ...

• Pow, Spork, Guard, ...

• Bundler, RVM, Rbenv, Pik, ...

• Rails, Sinatra, ...

• Vagrant

Page 9: Pourquoi ruby et rails déchirent

POUR LA PRODUCTION

• Unicorn, Passenger, ...

• Capistrano, Pupetts, Chef, ...

• Graylog2, God, ...

Page 10: Pourquoi ruby et rails déchirent

POUR LES DEV

• Cucumber

• Guard, SASS, Compass, ...

• Vagrant

• Graylog2, God, ...

Page 11: Pourquoi ruby et rails déchirent

ET ENCORE...

• + de 43 667 gems sur RubyGems.org

• ruby-toolbox.com

Page 12: Pourquoi ruby et rails déchirent

RAILS

Uglifier

Rackjson

i18nERB ActiveRecord

Page 13: Pourquoi ruby et rails déchirent

CMV

Page 14: Pourquoi ruby et rails déchirent

CM V!"#$ %#w !&'r!$$#r

Page 15: Pourquoi ruby et rails déchirent

MOR

Page 16: Pourquoi ruby et rails déchirent

MO Rb(#)' #$*'%!&*$ *pp%&+

Page 17: Pourquoi ruby et rails déchirent

ACTIVE RECORD

# app/models/article.rbclass Article < ActiveRecord::Baseend

article = Article.first

article.title#=> "hello world"

articlesarticlesarticlesid title body1 hello world This is a body

Page 18: Pourquoi ruby et rails déchirent

ACTIVE RECORDarticlesarticlesarticlesarticles

id title body published1 hello world This is a body 12 other art. Not published 0

articles = Article.where(published: 1)

articles.count#=> 1

Page 19: Pourquoi ruby et rails déchirent

CONFIGURATION

Page 20: Pourquoi ruby et rails déchirent

CONFIGURATIONC!&v#&'%!&,

Page 21: Pourquoi ruby et rails déchirent

ACTIVE RECORDarticlesarticlesarticlesarticles

id title body author_id1 ... ... 1

authorsauthorsid name1 John Doe

# app/models/article.rbclass Article < ActiveRec... belongs_to :authorend

# app/models/author.rbclass Author < ActiveRec... has_many :articlesend

article = Article.first

article.author.name#=> “John Doe”

Page 22: Pourquoi ruby et rails déchirent

ACTIVE RECORD

M-SQLP.'+r#SQLSQL%'#...

Page 23: Pourquoi ruby et rails déchirent

ROUTING

http://example.com/hello/John

# app/controller/hello_controller.rbclass HelloController < ApplicationController def index @name = params[:name] endend

# config/routes.rbget "hello/:name" => "hello#index"

URL

verbe HTTPcontrôleur

action du contrôleur

paramètre

Page 24: Pourquoi ruby et rails déchirent

VUES# app/controller/hello_controller.rbclass HelloController < ApplicationController def index @name = params[:name] endend

# app/views/hello/index.html.erbBonjour <%= @name %>

C!&v#&'%!&, !

Page 25: Pourquoi ruby et rails déchirent

HELPERS# app/controller/articles_controller.rbclass ArticlesController < ApplicationController def new @article = Article.new endend

<%= form_for @article do |f| %> <p><%= f.label :title, "Title" %><br /> <%= f.text_field :title %></p>

<p><%= f.label :body, "Body" %><br /> <%= f.text_area :body %></p>

<p><%= f.submit %></p><% end %>

Title

Body

Create Article

Page 26: Pourquoi ruby et rails déchirent

RAILTIES$ rake routesGET /hello/:name { :controller => "hello", :action => "index" }

$ rails serverLance un serveur web sur http://localhost:3000/

$ rails consoleLance une console avec le contexte de l’application >> Article.first.title #=> "hello world"

Page 27: Pourquoi ruby et rails déchirent

GÉNÉRATEURS$ rails generate model author name:string

invoke active_record create db/migrate/20120108151543_create_authors.rb create app/models/author.rb

instructions de création de la table authors

modèle Author

Page 28: Pourquoi ruby et rails déchirent

GÉNÉRATEURS$ rails g scaffold author name:stringcreate db/migrate/20120108152723_create_authors.rbcreate app/models/author.rb

route resources :authors

create app/controllers/authors_controller.rb

create app/views/authors/index.html.erbcreate app/views/authors/edit.html.erbcreate app/views/authors/show.html.erbcreate app/views/authors/new.html.erbcreate app/views/authors/_form.html.erb

create public/stylesheets/scaffold.css

modèleroutes

contrôleur

vues

CSS par défaut

Page 29: Pourquoi ruby et rails déchirent

GÉNÉRATEURS# config/routes.rbresources :authors

authors GET /authors { action: index controller: authors }author GET /authors/:id { action: show controller: authors }new_author GET /authors/new { action: new controller: authors } POST /authors { action: create controller: authors }edit_author GET /authors/:id/edit { action: edit controller: authors } PUT /authors/:id { action: update controller: authors } DELETE /authors/:id { action: destroy controller: authors }

<%= link_to "All authors", authors_path %>

<%= link_to "Edit", edit_author_path(@author) %>

Page 30: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 31: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 32: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 33: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 34: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 35: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 36: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 37: Pourquoi ruby et rails déchirent

GÉNÉRATEURS

Page 38: Pourquoi ruby et rails déchirent

LES PETITS PLUS D’ACTIVESUPPORT

1.kilobytes! #=> 1024

3.days.ago!! #=> Sat, 04 Feb 2012 17:45:42 CET +01:00

"héhé test".parameterize! #=> "hehe-test"

“article”.pluralize!! ! ! #=> "articles"

Page 39: Pourquoi ruby et rails déchirent

EXTENSIBILITÉGrâce aux Gems

Page 40: Pourquoi ruby et rails déchirent

VUES ET FORMULAIRES<%= form_for @article do |f| %> <p><%= f.label :title, "Title" %><br /> <%= f.text_field :title %></p>

<p><%= f.label :body, "Body" %><br /> <%= f.text_area :body %></p>

<p><%= f.submit %></p><% end %>

= simple_form_for @article do |f| = f.input :title = f.input :body = f.submit

slim + simple_form

Page 41: Pourquoi ruby et rails déchirent

ET TANT D’AUTRESM!"#!$%

K&'$"&r$

C&r$(rw&v(

A)*$v( A%'$"

MongoDB

Pagination

Upload de fichiers

Système d’administration

Page 42: Pourquoi ruby et rails déchirent

QUI UTILISE RAILS ?Tw$**(r

B&+()&'pG$*,-b

Gr!-p!"P&#(+ J&-"(+ US

S,!p$f.

http://rubyonrails.org/applications

Page 43: Pourquoi ruby et rails déchirent

J’INSTALLE TOUT ÇA COMMENT ?

Page 44: Pourquoi ruby et rails déchirent

JRUBY

Page 45: Pourquoi ruby et rails déchirent

LES RESSOURCES

Page 50: Pourquoi ruby et rails déchirent

UN GRAND MERCI

• A Simon Courtois

• @happynoff

• Pour ses slides :

• http://blog.happynoff.fr/post/pourquoi-ruby-on-rails-ca-dechire