Yann Klis, LPCDED, 18 novembre 2010 Ruby on Rails et développement web
Présentation <ul><li>Yann Klis
IUP GMI option Réseaux et application (2001)
DESS d'Informatique option Réseaux et Télécom (2002)
grandes entreprises, start'up, SSII
fondateur de Novelys (Strasbourg) en 2005
spécialisée dans le développement d'applications web
Utilise Ruby et Rails depuis mars 2005 </li></ul>
Introduction <ul><li>Retour en force de la plateforme web: Gmail, Google Maps, Delicious, Facebook, Twitter, etc
Avènements de nouveaux outils
AJAX, Web2.0, etc </li></ul>Qu'apporte Ruby on Rails au développement web ?
Plan <ul><li>Le langage Ruby (brève introduction)
Généralités sur Ruby on Rails
Principaux composants
Démo commentée </li></ul>
Plan <ul><li>Le langage Ruby </li></ul>
Ruby <ul><li>langage de script
multiplateforme
orienté objet  pur (introspection)
basé sur des messages </li></ul>
Ruby class Klass def hello(*args) &quot;Hello &quot; + args.join(' ') end end k = Klass.new k.hello &quot;gentle&quot;, &q...
Ruby <ul><li>langage de script
multiplateforme
orienté objet  pur
basé sur des messages
dynamique </li></ul>
Ruby class Printing def method_missing(m, *args) if (name = /^test_(.+)$/.match(m.id2name)) print name[1] end end end prin...
Ruby <ul><li>langage de script
multiplateforme
orienté objet  pur
basé sur des messages
dynamique
“ Duck typing”
Upcoming SlideShare
Loading in …5
×

Séminaire Ruby on Rails (novembre 2010)

482 views

Published on

Les slides du séminaire ou cours magistral que je donne tous les ans à l'IUT Robert Schuman de Strasbourg ou dans différentes écoles d'ingénieur de Strasbourg. Les slides changent donc tous les ans, mais vous voyez l'idée.

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

  • Be the first to like this

No Downloads
Views
Total views
482
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Séminaire Ruby on Rails (novembre 2010)

  1. 1. Yann Klis, LPCDED, 18 novembre 2010 Ruby on Rails et développement web
  2. 2. Présentation <ul><li>Yann Klis
  3. 3. IUP GMI option Réseaux et application (2001)
  4. 4. DESS d'Informatique option Réseaux et Télécom (2002)
  5. 5. grandes entreprises, start'up, SSII
  6. 6. fondateur de Novelys (Strasbourg) en 2005
  7. 7. spécialisée dans le développement d'applications web
  8. 8. Utilise Ruby et Rails depuis mars 2005 </li></ul>
  9. 9. Introduction <ul><li>Retour en force de la plateforme web: Gmail, Google Maps, Delicious, Facebook, Twitter, etc
  10. 10. Avènements de nouveaux outils
  11. 11. AJAX, Web2.0, etc </li></ul>Qu'apporte Ruby on Rails au développement web ?
  12. 12. Plan <ul><li>Le langage Ruby (brève introduction)
  13. 13. Généralités sur Ruby on Rails
  14. 14. Principaux composants
  15. 15. Démo commentée </li></ul>
  16. 16. Plan <ul><li>Le langage Ruby </li></ul>
  17. 17. Ruby <ul><li>langage de script
  18. 18. multiplateforme
  19. 19. orienté objet pur (introspection)
  20. 20. basé sur des messages </li></ul>
  21. 21. Ruby class Klass def hello(*args) &quot;Hello &quot; + args.join(' ') end end k = Klass.new k.hello &quot;gentle&quot;, &quot;readers&quot; -> &quot;Hello gentle readers&quot; k.send :hello, &quot;gentle&quot;, &quot;readers&quot; -> &quot;Hello gentle readers&quot; Un langage basé sur des messages
  22. 22. Ruby <ul><li>langage de script
  23. 23. multiplateforme
  24. 24. orienté objet pur
  25. 25. basé sur des messages
  26. 26. dynamique </li></ul>
  27. 27. Ruby class Printing def method_missing(m, *args) if (name = /^test_(.+)$/.match(m.id2name)) print name[1] end end end print = Printing.new print.test_hello -> “hello” print.test_haha -> “haha” Un langage dynamique
  28. 28. Ruby <ul><li>langage de script
  29. 29. multiplateforme
  30. 30. orienté objet pur
  31. 31. basé sur des messages
  32. 32. dynamique
  33. 33. “ Duck typing”
  34. 34. “ block” (closure)
  35. 35. itérateurs </li></ul>
  36. 36. Ruby ['pim', 'pam', 'poum'].each { |perso| print perso.capitalize } Block et itérateur
  37. 37. Ruby <ul><li>langage de script
  38. 38. multiplateforme
  39. 39. orienté objet pur
  40. 40. basé sur des messages
  41. 41. dynamique
  42. 42. typage fort
  43. 43. “ block”
  44. 44. continuations
  45. 45. esthétisme (!) </li></ul>
  46. 46. Ruby 5.times { print &quot;Odelay!&quot; } Exit unless &quot;restaurant&quot;.include? &quot;aura&quot; ['toast', 'cheese', 'wine'].each { |food| print food.capitalize } Un langage esthétique et expressif
  47. 47. Ruby <ul><li>langage de script
  48. 48. multiplateforme
  49. 49. orienté objet pur
  50. 50. basé sur des messages
  51. 51. dynamique
  52. 52. typage fort
  53. 53. “ block”
  54. 54. continuations
  55. 55. esthétisme (!) </li></ul>} Langage de domaine (DSL)
  56. 56. Plan <ul><li>Le langage Ruby
  57. 57. Généralités sur Ruby on Rails </li></ul>
  58. 58. Petite parenthèse <ul><li>Design Pattern ou Motif de Conception
  59. 59. MVC
  60. 60. ORM
  61. 61. REST </li></ul>
  62. 62. Petite parenthèse <ul><li>MVC </li></ul>
  63. 63. Petite parenthèse <ul><li>ORM Object Relational Mapping </li><ul><li>mapping des noms de classe avec les noms de tables
  64. 64. mapping des types
  65. 65. mapping des attributs </li></ul></ul>
  66. 66. Petite parenthèse <ul><li>ORM </li></ul>Table Products avec les champs : - name, VARCHAR(255) - description, TEXT - number, INT(11) Class Product avec les attributs - name, String - description, String - number, Integer
  67. 67. Petite parenthèse <ul><li>REST : Representational State Transfer </li><ul><li>!= SOAP, XML-RPC, etc
  68. 68. URL identifiant une ressource unique
  69. 69. verbes HTTP
  70. 70. Champ HTTP “accept” et types MIME </li></ul></ul>
  71. 71. Petite parenthèse Voir REST.xls ... Verbe HTTP Url Action GET /articles Liste des articles POST /articles Création d'un article GET /articles/new Formulaire de création d'un article GET /articles/:id/edit Formulaire d'édition d'un article GET /articles/:id Visualisation d'un article PUT /articles/:id Mise à jour d'un article DELETE /articles/:id Suppression d'un article
  72. 72. Qu'est-ce que Ruby on Rails ? <ul><li>Ruby on Rails, Rails, RoR : framework web
  73. 73. Design Pattern: MVC (Model View Controller), ORM (Object Relational Mapping), etc.
  74. 74. &quot;Don't Repeat Yourself&quot; (DRY)
  75. 75. “ Convention over Configuration”
  76. 76. Plusieurs composants : Active Record, Action Pack, Action Mailer, Action Web Service, Prototype/Scriptaculous (spin off)
  77. 77. Serveur web intégré (webrick, mongrel, thin)
  78. 78. REST </li></ul>
  79. 79. Un framework “agile” <ul><li>generators / scaffolding (CRUD)
  80. 80. serveur web intégré (webrick, mongrel, thin)
  81. 81. débugger intégré (irb)
  82. 82. ./script/console
  83. 83. tests unitaires, fonctionnels, d'intégration
  84. 84. déploiement avec Capistrano
  85. 85. génération de la documentation (rdoc)
  86. 86. automatisation (rake) </li></ul>
  87. 87. Plan <ul><li>Le langage Ruby
  88. 88. Généralités sur Ruby on Rails
  89. 89. Principaux composants </li></ul>
  90. 90. Active Record <ul><li>M de MVC
  91. 91. ORM
  92. 92. support du pluriel
  93. 93. support des relations
  94. 94. validation (présence, format, unicité, association, etc.)
  95. 95. callbacks ( create , save , update , etc.) </li></ul>
  96. 96. Active Record CREATE TABLE products ( id int(11) NOT NULL auto_increment, name varchar(255), PRIMARY KEY (id) ); class Product < ActiveRecord::Base end my_product = Product.new my_product.name = “Pipo” my_product.save my_product = Product.new({ “name” => “Molo” }) my_product = Product.find(:first) Fonctionnement de base
  97. 97. Active Record CREATE TABLE products ( id int(11) NOT NULL auto_increment, customer_id int(11) NOT NULL, name varchar(255), PRIMARY KEY (id) ); CREATE TABLE customers ( id int(11) NOT NULL auto_increment, name varchar(255), PRIMARY KEY (id) ); class Product < ActiveRecord::Base belongs_to :customer end class Customer < ActiveRecord::Base has_many :products end customer = Customer.new customer.name = “IBM” product = Product.new product.name = “pipo” customer.products << product customer.products.size Support des relations
  98. 98. Active Record <ul><li>belongs_to
  99. 99. has_one
  100. 100. has_many
  101. 101. has_many :through
  102. 102. polymorphisme
  103. 103. STI (Single Table Inheritance) </li></ul>
  104. 104. Action Pack <ul><li>moteur de template
  105. 105. écriture de template en Ruby (erb, haml, etc)
  106. 106. support XML (REXML)
  107. 107. routage d'url
  108. 108. AJAX
  109. 109. RESTful </li></ul>
  110. 110. Action Pack <form action=&quot;save_person&quot; method=&quot;post&quot;> Name: <%= text_field &quot;person&quot;, &quot;name&quot;, &quot;size&quot; => 20 %> Password: <%= password_field &quot;person&quot;, &quot;password&quot;, &quot;maxsize&quot; => 20 %> Single?: <%= check_box &quot;person&quot;, &quot;single&quot; %> Description: <%= text_area &quot;person&quot;, &quot;description&quot;, &quot;cols&quot; => 20 %> <input type=&quot;submit&quot; value=&quot;Save&quot;> </form> Exemple d'une vue
  111. 111. Action Pack Routage d'url Verbe HTTP Url Action Helper GET /articles index articles_path POST /articles create articles_path GET /articles/new new new_article_path GET /articles/:id/edit edit edit_article_path(product) GET /articles/:id show product_path(product) PUT /articles/:id update product_path(product) DELETE /articles/:id destroy product_path(product)
  112. 112. Conclusion <ul><li>Courbe d'apprentissage aisée
  113. 113. Productivité
  114. 114. Valeurs de la communauté Rails
  115. 115. Langage Ruby fondation profonde de Rails
  116. 116. Autres particularités de Ruby (drb, EventMachine)
  117. 117. Concurrence : Seaside (Smalltalk), Django (Python), Turbogears (Python), Symfony (PHP)
  118. 118. Rails n'est pas la solution à tous les problèmes (!) </li></ul>
  119. 119. Ressources Merci de votre attention ! <ul><li>http://www.ruby-doc.org
  120. 120. http://api.rubyonrails.org
  121. 121. “ Agile Web Development with Ruby on Rails”
  122. 122. “ Ruby for Rails”
  123. 123. http://www.peepcode.com (screencasts)
  124. 124. http://railscasts.com (screencasts) </li></ul>

×