SlideShare ist ein Scribd-Unternehmen logo
1 von 65
palais des
congrès
Paris




7, 8 et 9
février 2012
Introduction à Ruby


Mardi 7 février
Nicolas Ledez
Architecte système
Orange Business Services
It&L@bs
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Nicolas Ledez
Simon Courtois
Et maintenant Ruby
Ruby : l’histoire

  Crée en 1995
   Inspiré de
  Smalltalk, Lisp, Eiffel, Ada, etc
  Japonais Yukihiro Matsumoto « matz »
  Index TIOBE
    12 2012
    10 2011
Japon / Lean




  Toyota Production System
  Gestion sans gaspillage
Japon / Haïku


        Oh! Une luciole
 je voulais crier : « Regarde! »
        mais j'étais seul
               Taïg
Ruby 1/3


  Interprété
  Objet
  Multiparadigme
  Multiplateforme
  Libre, gratuit, etc
Ruby 2/3



  Ramasse-miettes
  Gestion d'exceptions
  Modification du code en « live »
  Expressions rationnelles (Regexp)
  Blocs
Ruby 3/3



  Héritage simple
  Mixin -> « héritage multiple »
  Extensions en C
  Les threads indépendants de l’OS
  Réflexion
Virtual Machine 1/2

  Matz's Ruby Interpreter –
  Cruby
  JRuby
  IronRuby
  Rubinius
  MacRuby
Virtual Machine 2/2



  YARV (Yet another Ruby VM)
  XRuby - rb -> Java bytecode
  RubyJS - rb -> Javascript
  HotRuby
On commence ?
Les variables

  var -> variable locale
  @var -> variable d'instance
  @@var -> variable de
  classe
  $var -> variable globale
  Var -> constante
Le langage / Procédural 1

 def une_fonction
  puts "Salut tout le monde !"
 end

 une_fonction




 Salut tout le monde !
Le langage / Procédural 2

 def une_fonction(message)
  puts message
 end

 une_fonction "It's alive !"




 It's alive !
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
Le langage / Tableau - bases


 Array.new(5, "A")
 a[0]['cat'] = 'feline'
 a[1, 2]
 a[1..3]
 a[-3, 3]
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 ]
Le langage / Dictionnaires


 h = Hash.new("Go Fish")
 h["a"] = 100
 h["b"] = 200
 h["a"]       #=> 100
 h["c"]       #=> "Go Fish"
Et on pourrait y passer des heures
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
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
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
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
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
Autour du langage
Autour de Ruby / Dev


  Rspec, Cucumber, Minitest, ...
  Spork, Guard, ...
  Bundler, RVM, Rbenv, Pik, ...

  http://www.bonjourgem.com/

  +33,500 RubyGems.org
Autour de Ruby / Prod

  Rails, Sinatra, ...
  Spork, Guard, ...
  HAML, SASS, Compass, ...
  Capistrano, Pupetts, Cheff, ...

  15% Ruby Github (2eme place)
ORM
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
ORM / Active record 2

 class Ticket < ActiveRecord::Base
  validates_presence_of :name
  validates_presence_of :status
  belongs_to :status
 end
ORM / DataMapper

 class LineItem
  include DataMapper::Resource

  property :order_id, Integer, :key => true
  property :item_number, Integer, :key => true
 end
Framework Web
Rails




                    Uglifier
                               Rack
                  ERB
   ActiveRecord                json
                        i18n
Demo Rails Par Simon Courtois
Sinatra

 require 'sinatra'

 get '/hi' do
  "Hello World!"
 end
Templates
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 %>
Templates / HAML

 %p#notice= notice
 %p
   %b Name:
   = @region.name
 = link_to 'Edit', edit_region_path(@region)
 |
 #{link_to 'Back', regions_path}
J’ai Windows, je fais
      comment
Rails Installer
Rails Installer / DevKit
JRuby
IronRuby
IronRuby
RubySteel
RubySteel
RubySteel
RubySteel
Les ressources
Essayer maintenant

  http://ironruby.net/try/
  http://tryruby.org/
  http://rubymonk.com/

  http://railsforzombies.org/
Pour apprendre

  http://ruby.railstutorial.org/
  http://railscasts.com/
A suivre

  http://nicolas.ledez.net/ @nledez
  Github : simonc @happynoff

  http://www.camilleroux.com/ @CamilleRoux
  http://matthieusegret.com/ @MatthieuSegret
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
Conclusion
Introduction à Ruby 2

Weitere ähnliche Inhalte

Ähnlich wie Introduction à Ruby 2

Ähnlich wie Introduction à Ruby 2 (20)

Quelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application webQuelle place pour le framework Rails dans le développement d'application web
Quelle place pour le framework Rails dans le développement d'application web
 
Ruby Pour RoR
Ruby Pour RoRRuby Pour RoR
Ruby Pour RoR
 
Cours de Matlab
Cours de MatlabCours de Matlab
Cours de Matlab
 
Mat lab1
Mat lab1Mat lab1
Mat lab1
 
Introduction à Sinatra
Introduction à SinatraIntroduction à Sinatra
Introduction à Sinatra
 
Implementing a key/value store
Implementing a key/value storeImplementing a key/value store
Implementing a key/value store
 
Exploiter php 5
Exploiter php 5Exploiter php 5
Exploiter php 5
 
Trucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQLTrucs et astuces PHP et MySQL
Trucs et astuces PHP et MySQL
 
PHP.pptx
PHP.pptxPHP.pptx
PHP.pptx
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Flash ActionScript
Flash ActionScriptFlash ActionScript
Flash ActionScript
 
Coursmp
CoursmpCoursmp
Coursmp
 
Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)Présentation Javascript à l'ESI (Alger)
Présentation Javascript à l'ESI (Alger)
 
Php1
Php1Php1
Php1
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2)
 
Future of java script web version
Future of java script web versionFuture of java script web version
Future of java script web version
 
Drools
DroolsDrools
Drools
 
Audits php
Audits phpAudits php
Audits php
 
Php seance1
Php seance1Php seance1
Php seance1
 
Python avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de donnéesPython avancé : Ensemble, dictionnaire et base de données
Python avancé : Ensemble, dictionnaire et base de données
 

Mehr von Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Mehr von Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Introduction à Ruby 2

  • 1. palais des congrès Paris 7, 8 et 9 février 2012
  • 2. Introduction à Ruby Mardi 7 février Nicolas Ledez Architecte système Orange Business Services It&L@bs
  • 3.
  • 10.
  • 13. Ruby : l’histoire Crée en 1995 Inspiré de Smalltalk, Lisp, Eiffel, Ada, etc Japonais Yukihiro Matsumoto « matz » Index TIOBE  12 2012  10 2011
  • 14. Japon / Lean Toyota Production System Gestion sans gaspillage
  • 15. Japon / Haïku Oh! Une luciole je voulais crier : « Regarde! » mais j'étais seul Taïg
  • 16. Ruby 1/3 Interprété Objet Multiparadigme Multiplateforme Libre, gratuit, etc
  • 17. Ruby 2/3 Ramasse-miettes Gestion d'exceptions Modification du code en « live » Expressions rationnelles (Regexp) Blocs
  • 18. Ruby 3/3 Héritage simple Mixin -> « héritage multiple » Extensions en C Les threads indépendants de l’OS Réflexion
  • 19. Virtual Machine 1/2 Matz's Ruby Interpreter – Cruby JRuby IronRuby Rubinius MacRuby
  • 20. Virtual Machine 2/2 YARV (Yet another Ruby VM) XRuby - rb -> Java bytecode RubyJS - rb -> Javascript HotRuby
  • 22. Les variables var -> variable locale @var -> variable d'instance @@var -> variable de classe $var -> variable globale Var -> constante
  • 23. Le langage / Procédural 1 def une_fonction puts "Salut tout le monde !" end une_fonction Salut tout le monde !
  • 24. Le langage / Procédural 2 def une_fonction(message) puts message end une_fonction "It's alive !" It's alive !
  • 25. 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
  • 26. Le langage / Tableau - bases Array.new(5, "A") a[0]['cat'] = 'feline' a[1, 2] a[1..3] a[-3, 3]
  • 27. 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 ]
  • 28. Le langage / Dictionnaires h = Hash.new("Go Fish") h["a"] = 100 h["b"] = 200 h["a"] #=> 100 h["c"] #=> "Go Fish"
  • 29. Et on pourrait y passer des heures
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 36. Autour de Ruby / Dev Rspec, Cucumber, Minitest, ... Spork, Guard, ... Bundler, RVM, Rbenv, Pik, ... http://www.bonjourgem.com/ +33,500 RubyGems.org
  • 37. Autour de Ruby / Prod Rails, Sinatra, ... Spork, Guard, ... HAML, SASS, Compass, ... Capistrano, Pupetts, Cheff, ... 15% Ruby Github (2eme place)
  • 38. ORM
  • 39. 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
  • 40. ORM / Active record 2 class Ticket < ActiveRecord::Base validates_presence_of :name validates_presence_of :status belongs_to :status end
  • 41. ORM / DataMapper class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true end
  • 43. Rails Uglifier Rack ERB ActiveRecord json i18n
  • 44. Demo Rails Par Simon Courtois
  • 45. Sinatra require 'sinatra' get '/hi' do "Hello World!" end
  • 47. 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 %>
  • 48. Templates / HAML %p#notice= notice %p %b Name: = @region.name = link_to 'Edit', edit_region_path(@region) | #{link_to 'Back', regions_path}
  • 49. J’ai Windows, je fais comment
  • 52. JRuby
  • 60. Essayer maintenant http://ironruby.net/try/ http://tryruby.org/ http://rubymonk.com/ http://railsforzombies.org/
  • 61. Pour apprendre http://ruby.railstutorial.org/ http://railscasts.com/
  • 62. A suivre http://nicolas.ledez.net/ @nledez Github : simonc @happynoff http://www.camilleroux.com/ @CamilleRoux http://matthieusegret.com/ @MatthieuSegret
  • 63. 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

Hinweis der Redaktion

  1. Paradigme de programmation -&gt; style fondamentalParadigmes Objet, impératif, concurrent, fonctionnel
  2. Réflexion, -&gt; les programmes et les objets de s&apos;inspectenteux-mêmes et de se modifie