POURQUOI RUBY ET RAILS     DÉCHIRENT !       Par Nicolas Ledez
RUBY 1/3• Interprété• Objet• Multiparadigme• Multiplateforme• Libre, gratuit, etc
RUBY 2/3• Ramasse-miettes• Gestion   dexceptions• Expressions   rationnelles (Regexp)• Blocs• Extensions   en C
RUBY 3/3• Héritage   simple• Mixin   -> « héritage multiple »• Réflexion• Crée    en 1995
VIRTUAL MACHINE• Matzs   Ruby Interpreter – Cruby• JRuby• Rubinius• MacRuby• mruby• RubyMotion
AUTOUR DU LANGAGE
POUR LES DEV• Rspec, Cucumber, Minitest, ...• HAML, SASS, Compass, ...• Pow, Spork, Guard, ...• Bundler, RVM, Rbenv, Pik, ...
POUR LA PRODUCTION• Unicorn, Passenger, ...• Capistrano, Pupetts, Chef, ...• Graylog2, God, ...
POUR LES DEV• Cucumber• Guard, SASS, Compass, ...• Vagrant• Graylog2, God, ...
ET ENCORE...•+   de 43 667 gems sur RubyGems.org• ruby-toolbox.com
RAILS      json         Rack         Uglifier                   i18nERB                       ActiveRecord
MV C
M odel View C ontroller
OR M
Object R elational Mapping
ACTIVE RECORD                articlesid      title                  body1    hello world           This is a body         ...
ACTIVE RECORD                    articlesid      title          body              published1    hello world   This is a bo...
CONFIGURATION
ConventionsCONFIGURATION
ACTIVE RECORD                    articlesid        title        body    author_id                                         ...
ACTIVE RECORD  MySQL  PostgreSQL  SQLite  ...
ROUTING# app/controller/hello_controller.rbclass HelloController < ApplicationController  def index    @name = params[:nam...
VUES# app/controller/hello_controller.rbclass HelloController < ApplicationController  def index    @name = params[:name] ...
HELPERS# app/controller/articles_controller.rbclass ArticlesController < ApplicationController  def new    @article = Arti...
RAILTIES$ rake routesGET /hello/:name   { :controller => "hello", :action => "index" }$ rails serverLance un serveur web s...
GÉNÉRATEURS$ rails generate model author name:string  invoke active_record      create db/migrate/20120108151543_create_au...
GÉNÉRATEURS$ rails g scaffold author name:stringcreate   db/migrate/20120108152723_create_authors.rbcreate   app/models/au...
GÉNÉRATEURS # config/routes.rb resources :authors   authors       GET /authors            {   action:   index     controll...
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
GÉNÉRATEURS
LES PETITS PLUS         D’ACTIVESUPPORT1.kilobytes!   #=> 10243.days.ago!!   #=> Sat, 04 Feb 2012 17:45:42 CET +01:00"héhé...
EXTENSIBILITÉ  Grâce aux Gems
VUES ET FORMULAIRES<%= form_for @article do |f| %>  <p><%= f.label :title, "Title" %><br />     <%= f.text_field :title %>...
ET TANT D’AUTRESMongoid                Pagination     MongoDB                        Kaminari  Carierwave           Systèm...
QUI UTILISE RAILS ? Twitter                                  Github               BasecampPages Jaunes US                 ...
J’INSTALLE TOUT ÇA     COMMENT ?
JRUBY
LES RESSOURCES
ESSAYER EN LIGNE• tryruby.org• rubykoans.com• rubymonk.com• railsforzombies.org
POUR APPRENDRE• hackety.com• ruby.railstutorial.org• railscasts.com• jasimabasheer.com/posts/ meta_introduction_to_ruby.ht...
A SUIVRE• nicolas.ledez.net   @nledez• organicweb.fr   @organicweb• camilleroux.com     @CamilleRoux• matthieusegret.com  ...
LA COMMUNAUTÉE• Apéros   Ruby• rubyfrance.org• railsfrance.org• Google   groups:• Rennes   on Rails• Railsfrance
UN GRAND MERCI•A   Simon Courtois• @happynoff• Pour   ses slides :•   http://blog.happynoff.fr/post/pourquoi-ruby-on-rails...
Pourquoi ruby et rails déchirent
Upcoming SlideShare
Loading in …5
×

Pourquoi ruby et rails déchirent

342 views

Published on

Et bien il faut lire la présentation !

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
342
On SlideShare
0
From Embeds
0
Number of Embeds
29
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pourquoi ruby et rails déchirent

  1. 1. POURQUOI RUBY ET RAILS DÉCHIRENT ! Par Nicolas Ledez
  2. 2. RUBY 1/3• Interprété• Objet• Multiparadigme• Multiplateforme• Libre, gratuit, etc
  3. 3. RUBY 2/3• Ramasse-miettes• Gestion dexceptions• Expressions rationnelles (Regexp)• Blocs• Extensions en C
  4. 4. RUBY 3/3• Héritage simple• Mixin -> « héritage multiple »• Réflexion• Crée en 1995
  5. 5. VIRTUAL MACHINE• Matzs Ruby Interpreter – Cruby• JRuby• Rubinius• MacRuby• mruby• RubyMotion
  6. 6. AUTOUR DU LANGAGE
  7. 7. POUR LES DEV• Rspec, Cucumber, Minitest, ...• HAML, SASS, Compass, ...• Pow, Spork, Guard, ...• Bundler, RVM, Rbenv, Pik, ...• Rails, Sinatra, ...• Vagrant
  8. 8. POUR LA PRODUCTION• Unicorn, Passenger, ...• Capistrano, Pupetts, Chef, ...• Graylog2, God, ...
  9. 9. POUR LES DEV• Cucumber• Guard, SASS, Compass, ...• Vagrant• Graylog2, God, ...
  10. 10. ET ENCORE...•+ de 43 667 gems sur RubyGems.org• ruby-toolbox.com
  11. 11. RAILS json Rack Uglifier i18nERB ActiveRecord
  12. 12. MV C
  13. 13. M odel View C ontroller
  14. 14. OR M
  15. 15. Object R elational Mapping
  16. 16. ACTIVE RECORD articlesid title body1 hello world This is a body # app/models/article.rb class Article < ActiveRecord::Base end article = Article.first article.title #=> "hello world"
  17. 17. ACTIVE RECORD articlesid title body published1 hello world This is a body 12 other art. Not published 0 articles = Article.where(published: 1) articles.count #=> 1
  18. 18. CONFIGURATION
  19. 19. ConventionsCONFIGURATION
  20. 20. ACTIVE RECORD articlesid title body author_id # app/models/article.rb1 ... ... 1 class Article < ActiveRec... belongs_to :author end # app/models/author.rb class Author < ActiveRec... authors has_many :articles id name end 1 John Doe article = Article.first article.author.name #=> “John Doe”
  21. 21. ACTIVE RECORD MySQL PostgreSQL SQLite ...
  22. 22. ROUTING# app/controller/hello_controller.rbclass HelloController < ApplicationController def index @name = params[:name] endend http://example.com/hello/John # config/routes.rb get "hello/:name" => "hello#index" action du contrôleur URL contrôleur verbe HTTP paramètre
  23. 23. VUES# app/controller/hello_controller.rbclass HelloController < ApplicationController def index @name = params[:name] endend# app/views/hello/index.html.erbBonjour <%= @name %> Conventions !
  24. 24. HELPERS# app/controller/articles_controller.rbclass ArticlesController < ApplicationController def new @article = Article.new endend Title <%= form_for @article do |f| %> <p><%= f.label :title, "Title" %><br /> <%= f.text_field :title %></p> Body <p><%= f.label :body, "Body" %><br /> <%= f.text_area :body %></p> <p><%= f.submit %></p> <% end %> Create Article
  25. 25. 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"
  26. 26. 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
  27. 27. GÉNÉRATEURS$ rails g scaffold author name:stringcreate db/migrate/20120108152723_create_authors.rbcreate app/models/author.rb modèleroute resources :authors routescreate app/controllers/authors_controller.rb contrôleurcreate app/views/authors/index.html.erbcreate app/views/authors/edit.html.erbcreate app/views/authors/show.html.erbcreate app/views/authors/new.html.erb vuescreate app/views/authors/_form.html.erbcreate public/stylesheets/scaffold.css CSS par défaut
  28. 28. GÉNÉRATEURS # config/routes.rb resources :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) %>
  29. 29. GÉNÉRATEURS
  30. 30. GÉNÉRATEURS
  31. 31. GÉNÉRATEURS
  32. 32. GÉNÉRATEURS
  33. 33. GÉNÉRATEURS
  34. 34. GÉNÉRATEURS
  35. 35. GÉNÉRATEURS
  36. 36. GÉNÉRATEURS
  37. 37. LES PETITS PLUS D’ACTIVESUPPORT1.kilobytes! #=> 10243.days.ago!! #=> Sat, 04 Feb 2012 17:45:42 CET +01:00"héhé test".parameterize! #=> "hehe-test"“article”.pluralize! ! ! #=> "articles" !
  38. 38. EXTENSIBILITÉ Grâce aux Gems
  39. 39. 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 %> slim + simple_form = simple_form_for @article do |f| = f.input :title = f.input :body = f.submit
  40. 40. ET TANT D’AUTRESMongoid Pagination MongoDB Kaminari Carierwave Système d’administration Upload de fichiers Active Admin
  41. 41. QUI UTILISE RAILS ? Twitter Github BasecampPages Jaunes US Groupon Shopify http://rubyonrails.org/applications
  42. 42. J’INSTALLE TOUT ÇA COMMENT ?
  43. 43. JRUBY
  44. 44. LES RESSOURCES
  45. 45. ESSAYER EN LIGNE• tryruby.org• rubykoans.com• rubymonk.com• railsforzombies.org
  46. 46. POUR APPRENDRE• hackety.com• ruby.railstutorial.org• railscasts.com• jasimabasheer.com/posts/ meta_introduction_to_ruby.html• www.pierreschambacher.com/blog/lectures-pour- apprendre-ruby-et-rails/
  47. 47. A SUIVRE• nicolas.ledez.net @nledez• organicweb.fr @organicweb• camilleroux.com @CamilleRoux• matthieusegret.com @MatthieuSegret• news.humancoders.com @Human_Coders• @brmichel (http://linuxfr.org/)
  48. 48. LA COMMUNAUTÉE• Apéros Ruby• rubyfrance.org• railsfrance.org• Google groups:• Rennes on Rails• Railsfrance
  49. 49. UN GRAND MERCI•A Simon Courtois• @happynoff• Pour ses slides :• http://blog.happynoff.fr/post/pourquoi-ruby-on-rails-ca-dechire

×