Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction à Ruby 2

293 views

Published on

Dans cette session vous apprendrez tout sur Ruby. Le langage, les frameworks, la communauté, mais surtout un esprit. Passé le teaser, Nicolas Ledez vous présentera comment Ruby peut vous apporter tous les jours une méthodologie dans votre travail, et des outils pour réaliser un prototype rapidement. Quel que soit votre langage d'origine, Ruby complète parfaitement votre boite à outils de développeur/administrateur système.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Introduction à Ruby 2

  1. 1. palais descongrèsParis7, 8 et 9février 2012
  2. 2. Introduction à RubyMardi 7 févrierNicolas LedezArchitecte systèmeOrange Business ServicesIt&L@bs
  3. 3. Nicolas Ledez
  4. 4. Nicolas Ledez
  5. 5. Nicolas Ledez
  6. 6. Nicolas Ledez
  7. 7. Nicolas Ledez
  8. 8. Nicolas Ledez
  9. 9. Simon Courtois
  10. 10. Et maintenant Ruby
  11. 11. Ruby : l’histoire Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etc Japonais Yukihiro Matsumoto « matz » Index TIOBE  12 2012  10 2011
  12. 12. Japon / Lean Toyota Production System Gestion sans gaspillage
  13. 13. Japon / Haïku Oh! Une luciole je voulais crier : « Regarde! » mais jétais seul Taïg
  14. 14. Ruby 1/3 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc
  15. 15. Ruby 2/3 Ramasse-miettes Gestion dexceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs
  16. 16. Ruby 3/3 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de l’OS Réflexion
  17. 17. Virtual Machine 1/2 Matzs Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby
  18. 18. Virtual Machine 2/2 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby
  19. 19. On commence ?
  20. 20. Les variables var -> variable locale @var -> variable dinstance @@var -> variable de classe $var -> variable globale Var -> constante
  21. 21. Le langage / Procédural 1 def une_fonction puts "Salut tout le monde !" end une_fonction Salut tout le monde !
  22. 22. Le langage / Procédural 2 def une_fonction(message) puts message end une_fonction "Its alive !" Its alive !
  23. 23. Le langage / Objet class UneClasse mess1 = UneClasse.new "Salut attr_accessor :message tout le monde !" def initialize(message) mess1.afficher_message @message = message end mess1.message = "Au revoir" puts mess1.message def afficher_message puts @message end end Salut tout le monde ! Au revoir
  24. 24. Le langage / Tableau - bases Array.new(5, "A") a[0][cat] = feline a[1, 2] a[1..3] a[-3, 3]
  25. 25. Le langage / Tableau - cool [ 1, 2, 3 ] + [ 4, 5 ] #=> [ 1, 2, 3, 4, 5 ] [ 1, 1, 3, 5 ] & [ 1, 2, 3 ] #=> [ 1, 3 ] [ 1, 2, 3 ] * 3 #=> [ 1, 2, 3, 1, 2, 3, 1, 2, 3 ] [ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
  26. 26. Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish"
  27. 27. Et on pourrait y passer des heures
  28. 28. Classe / héritage class MyArray < Array def clean! self.each do |e| puts list.join " " self.delete(e) if e % 2 puts list.clean!.join " end end " end puts list.join " " list = MyArray.new([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]) 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 2 4 6 8 10
  29. 29. Classe / Monkey 1 Class Array def clean! self.each do |e| puts list.join " " self.delete(e) if e % 2 puts list.clean!.join " end end " end puts list.join " " list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 2 4 6 8 10
  30. 30. Classe / Monkey 2 - map Class Array def double puts list.double.join " " self.map { |e| e * 2 } puts list.join " " end end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 2 4 6 8 10 12 14 16 18 20 1 2 3 4 5 6 7 8 9 10
  31. 31. Classe / Monkey 3 - reduce Class Array def clean self.reduce([]) do |a, e| puts list. clean.join " " a << e unless ((e % 2) == 1) a puts list.join " " end end end list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10
  32. 32. Classe / Mixin Module MyClean class Array def clean! include MyClean self.each do |e| end self.delete(e) if e % 2 end class Hash end include MyClean def double end self.map { |e| e * 2 } end Array.new.double End Hash.new.double
  33. 33. Autour du langage
  34. 34. Autour de Ruby / Dev Rspec, Cucumber, Minitest, ... Spork, Guard, ... Bundler, RVM, Rbenv, Pik, ... http://www.bonjourgem.com/ +33,500 RubyGems.org
  35. 35. Autour de Ruby / Prod Rails, Sinatra, ... Spork, Guard, ... HAML, SASS, Compass, ... Capistrano, Pupetts, Cheff, ... 15% Ruby Github (2eme place)
  36. 36. ORM
  37. 37. ORM / Active record 1 class CreateTickets < ActiveRecord::Migration def change create_table :tickets do |t| t.string :name t.text :description t.timestamps end end end
  38. 38. ORM / Active record 2 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end
  39. 39. ORM / DataMapper class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end
  40. 40. Framework Web
  41. 41. Rails Uglifier Rack ERB ActiveRecord json i18n
  42. 42. Demo Rails Par Simon Courtois
  43. 43. Sinatra require sinatra get /hi do "Hello World!" end
  44. 44. Templates
  45. 45. Templates / ERB <p id="notice"><%= notice %></p> <p> <b>Name:</b> <%= @region.name %> </p> <%= link_to Edit, edit_region_path(@region) %> | <%= link_to Back, regions_path %>
  46. 46. Templates / HAML %p#notice= notice %p %b Name: = @region.name = link_to Edit, edit_region_path(@region) | #{link_to Back, regions_path}
  47. 47. J’ai Windows, je fais comment
  48. 48. Rails Installer
  49. 49. Rails Installer / DevKit
  50. 50. JRuby
  51. 51. IronRuby
  52. 52. IronRuby
  53. 53. RubySteel
  54. 54. RubySteel
  55. 55. RubySteel
  56. 56. RubySteel
  57. 57. Les ressources
  58. 58. Essayer maintenant http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/
  59. 59. Pour apprendre http://ruby.railstutorial.org/ http://railscasts.com/
  60. 60. A suivre http://nicolas.ledez.net/ @nledez Github : simonc @happynoff http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret
  61. 61. La communautée http://rubylive.fr/ @RubyLiveFR http://www.rubyfrance.org/ http://www.railsfrance.org/ Google groups: Rennes on Rails Apéros Ruby Railsfrance Ruby on Rails: Core @RubyJobsFR
  62. 62. Conclusion

×