• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ruby Pour RoR
 

Ruby Pour RoR

on

  • 2,269 views

presentation du langage ruby

presentation du langage ruby

Statistics

Views

Total Views
2,269
Views on SlideShare
2,269
Embed Views
0

Actions

Likes
1
Downloads
19
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ruby Pour RoR Ruby Pour RoR Presentation Transcript

    • Ruby for ROR¬†¬† (Ruby on Rails) By Eric German Lemonasso.org version 1.1
    • il √©tait une fois
      • Origine : Matsumoto Yukihiro , a.k.a. Matz ,
      • Ann√©e : 1993
      • h√©rit√© de Perl , Python¬† , PHP, java
      • Interpr√©t√©¬† et¬†¬† objet
      • ¬†
      • Pouss√© par Rails¬† (framework¬† MVC)¬†
      • ¬† Rails : David Hansson (2004)
      • ¬†
    • V√©rification et installation
      • ruby -v¬† (interpr√©teur de commande)
      • irb v¬†¬†¬†¬†¬†¬† (interpreteur interactif)
      • gem -v¬† (gestion des modules gemmes)
      • rdoc -v¬† (g√©n√©rateur de doc)
      • ri -v¬†¬†¬†¬†¬†¬†¬† (lecteur de doc ¬ß man)
      • rdebub -v (mode debug de ruby) Installation :
      • Par apt-get (ruby , irb,ri,rdoc,rubygems et ruby-dev| libruby-dev )
      • (Attention¬† faire pr√©alablement :apt-get install libyaml-ruby apt-get install libzlib-ruby)
    • Manip initiale
      • Tester la pr√©sence de ruby¬†
      • Tester la pr√©sence de irb
      • Tester la pr√©sence de ri
      • En cas d'√©chec , installer les programmes manquants.
    • Gem
      • Permet de chercher et d'installer des modules distants.
      • Installation
      • (par apt-get¬† install rubygems)¬†
      • Ou √† partir de l'archive
      • ruby setup.rb
      • Utilisation
      • gem list¬† -r¬† (liste des gemmes) ==> interrogation des serveurs distant (r= remote) pour le local => gem list
      • gem¬† install¬†¬† <nom_du_gemme>
    • Installation de Rails
      • gem install rails
      • Installation des drivers des bases de donn√©es par gem.
      • Bases support√©es :
        • MySQL
        • PostgreSQL
        • SQLite
        • SQL Server
        • IBM DB2
        • Informix
        • Oracle ‚Äď HowtoConnectToOracle
        • Firebird /Interbase (as of Rails 0.14.4)
        • LDAP ‚Äď Not exactly a DB driver, but ActiveLDAP can be used with Rails.
        • SybaseASA (Sybase Adaptive Server Anywhere aka SQL Anywhere Studio)
        • MonetDB? see http://rubyforge.org/projects/monetdb
      • ¬†
    • Documentation
      • ¬† Par RI
      • ri Class
      • Par rdoc
      • gem rdoc
      • puis¬† gem server
      • http://localhost:8808/
      • Par web¬†
      • http://www.digitalmediaminute.com/
      • article/1816/top-ruby-on-rails-tutorials¬†
      • http://www.ruby-doc.org/¬†
      • http://www.rubyonrails.org/docs
      • http://tryruby.hobix.com/¬†¬†¬† (ruby en ligne)
      • http://phrogz.net/ProgrammingRuby/frameset.html
    • Ruby :variables
      • Les variables => Par contenu
        • Les chaines de caract√®res
        • Les nombres
        • Les tableaux =[..]
        • Les tableaux associatifs ={..}
        • Les symboles :nom
    • Les IDE
      • Jedit + plugin ruby
      • ¬†
      • Radrails¬† (aptana studio et eclipse)
      • ¬†
      • SciTe
      • ¬†
      • Gedit
      • (emacs , vim)¬†
    • D√©marrage
      • Les chaines de caract√®res a = &quot;eric&quot; puts a
      • Mise en pratique :
        • Fichier essai.rb¬†
      • #!/usr/bin/ruby
      • a = &quot;eric&quot; puts a
      • puis lancement par ruby ./essai.rb
      • Ou¬†
        • Par irb¬†
        • Par http://tryruby.hobix.com/
    • Manip demarrage
        • R√©aliser un programme qui affiche 'bonjour tout le monde'
      • (hello.rb)
        • Le lancer par ruby
        • Le lancer par irb (load <nom_pgm>¬†
        • Le r√©aliser en ligne par irb et TryRuby.
      • ¬† Les nombres
      • b=1 puts b b=23.4 puts b
    • M√©thode sur les chaines: String.methode
      • capitalize et capitalize!¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† to_i
      • '+'¬† et <<¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† upcase
      • length
      • count &quot;&quot;
      • delete
      • downcase
      • empty?
      • scan¬†
      • sub
      • succ
      • [] (int)
    • M√©thodes sur les nombres
      • to_s
      • zero?
      • chr
      • succ¬†
      • upto
      • next
      • time
      • +=
    • Manip sur les chaines et les nombres Avec ruby¬† (puts , print ,p ) Avec irb forme &quot;chaine&quot;.methode Trouver les methodes de chaine Essayer quelques op√©rations de chaines 'e'[0] ¬† ¬† nombres ( ajout , soustraction ) Calculer une moyenne¬† ¬† Objectifs: ¬† creation par new , liste des m√©thodes¬† completion dans irb¬† syntaxe methode!
    • Les tableaux (array)
      • []
      • collect
      • delete_at
      • pop
      • push
      • empty?
      • first
      • insert
      • <<
    • Hashtable - hash
      • []
      • delete
      • exist?
      • Utilisation des symboles:
      • hash[:cle]= 'valeur'
      • keys
      • values
    • Manip sur les tableaux et hash
      • Cr√©er un tableau, l'afficher
      • Ajouter des √©l√©ments
      • Cr√©er un hash, l'afficher
      • ¬†
      • Trier un tableau.
      • Afficher les cl√©s d'un hash
    • Ruby :variables
      • Par port√©e
        • variables globales ($nom)
        • variables locale (par defaut)
        • Les constantes¬† : NOM
        • Les variables d'instances (@nom)
        • Les variables de classe (@@nom)
    • Les structures de contr√īle: if
      • if condition [then]
      • ¬† else
      • end
        • elsif¬†
        • unless¬†
        • case¬†
      • ¬†¬†¬† ¬†¬†¬† ¬† when¬†
        • ¬† instruction sous condition¬†
      • ¬† ¬†¬† ¬†¬†¬† ¬† a=2¬† if condition
    • Les structures de contr√īle: boucles
      • while condition [do]
      • ¬† ...
      • end
      • Plus rare :
      • ¬† begin¬†
      • ¬†¬† code¬†
      • ¬† end while condition¬†
        • code while condition
        • for¬† i in 1..range (.) ¬† =>¬† intervalle ouvert ou ferm√©..
      • ¬† ¬†¬†¬†¬†¬†¬†¬† range => ..
      • ¬†¬†¬†¬†¬†¬†¬†¬†¬† liste¬† =>¬† [¬† ]¬†
      • ¬†¬†¬†¬†¬†¬† end
      • ¬†
        • (until )
    • Les fonctions
      • D√©finition¬†
      • def cube ¬†¬† ¬†a= 4 * * 3 ¬†¬† ¬†return a end¬†
      • appel ¬†
      • cube
      • ...¬† ou¬†
      • def cub
      • ¬† a= 4 * * 3 end
      • ....
    • Parametres
      • def cube (valeur) valeur * * 3 end
      • appel cube 5 ¬†¬† ou ¬† cube(5) ¬†
      • def cube (valeur=4)¬† => valeur par defaut
      • def¬†cube¬†(*valeur)¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†
      • ¬†¬† valeur[0]¬†**3 ¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†
      • end¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† ¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† def¬†cubeET (v,*valeur)¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†
      • def cubeET (v,valeur=4)¬†
      • ¬†
      • Parametres nomm√©s¬†
      • def¬†cubeET (*params)¬†¬†¬†¬†¬†¬†¬†¬†¬†
      • ¬† puts params[:level]¬†
      • end
      • cudeET :nom => 'eric'
    • manip sur les fonctions
      • Ecrire une fonction de conversion :
      • ¬†
      • Euros/Dollar
      • Celsius /Fahrenheit (formule : ¬įF = (( 9 x ¬įC ) / 5 ) + 32 )
      • Une fonction qui affiche les parametres et leur type
    • Les objets
      • Tout est objet (et convention)¬† en RUBY Cr√©ation (new) class Chanson ¬†¬†def¬†initialize(t,¬†a,¬†duree) ¬†¬†¬†¬†@titre¬†¬†¬†¬† = t ¬†¬†¬†¬†@artiste¬†¬† =¬†a ¬†¬†¬†¬†@duree =¬†duree ¬†¬†end end mon_morceau = Chanson.new('let it be' , 'beatles' , 180) puts mon_morceau
    • Les classes
      • class NomDeLaClasse
      • ¬†¬† def methode
      • ¬†
      • ¬†¬† end
      • end
    • Appels de methode
      • puts mon_morceau.class puts mon_morceau.id¬† (ou object_id) ¬† a= mon_morceau puts a.id c=a.clone (ou dup) put c.id
      • Remarque : Il n'est pas necessaire d'avoir une methode d'initialisation
    • Exemple
      • class Bis ¬†¬†def hurlement ¬†¬†¬† 'une autre , une autre' ¬† end end a=Bis.new puts¬† a.hurlement
    • Accesseurs manuels¬† class Chanson ¬†¬†def¬†initialize(t,¬†a,¬†duree) ¬†¬†¬†¬†@titre¬†¬†¬†¬† = t ¬†¬†¬†¬†@artiste¬†¬† =¬†a ¬†¬†¬†¬†@duree =¬†duree ¬†¬†end def titre @titre end def titre(=titre) @titre = titre end end
    • Les¬† accesseurs 'Automatiques' ¬† attr_accessor attr_reader attr_writer attr_reader(titre) attr_reader :titre class Chanson ¬† attr_accessor :titre, :artiste , :duree ¬† (utilisation de 'self')
    • Quelques m√©thodes natives
      • to_s¬† (to string )
      • inspect (sortie am√©lior√©e) id / object_id ( identifiant de l'objet) class / type is_a? methods respond_to? :methode
    • Variables de classe
      • class Voiture
      • ¬† @@nb_de_voiture
      • Methodes de classe
      • class Voiture
      • def Voiture.comptage
      • @@nb_de_voiture+=1
      • end
      • ¬†
      • ¬†
    • Manip sur les classes
      • ¬† Cr√©er une classe 'Carte'¬†¬† (couleur ,valeur, nom_usage)
      • methodes:
      • ¬† ¬† ¬† ¬† def initialize(couleur,valeur) ¬†¬†¬†¬†¬†¬†¬† def to_humain(v) ¬†¬†¬†¬†¬†¬†¬† def to_s
      • Cr√©er une classe¬† 'Jeu' (32 cartes) ¬†
      • ¬†¬†¬†¬†¬†¬†¬†¬† def initialize(nb=32) ¬†¬† ¬†¬†¬† ¬† def affiche ¬†¬† ¬†¬†¬†¬† ¬†def melange ¬†¬† ¬†¬†¬† ¬†¬†def tirage(nb=1)
      • Cr√©er une classe UneMain (5 cartes)¬†
      • ¬† ¬†¬† ¬†¬† def initialize
      • ¬†¬†¬†¬†¬†¬†¬† def ajoute(carte) ¬†¬†¬†¬†¬†¬†¬† def defausse(*param) ¬†¬†¬†¬†¬†¬†¬† def to_s ¬†¬†¬†¬†¬†¬†¬† def tri_par_couleur ¬†¬†¬†¬†¬†¬†¬† def tri_par_valeur ¬†¬†¬†¬†¬†¬†¬† def initialize(nb=32)
      • ¬†
    • Etendre une classe
      • class 'Nom_de_classe'¬†
      • ¬†¬† def nouvelle_methode
      • ¬†¬† end
      • ¬†¬† def¬† surcharge¬†
      • ¬†¬† end
      • end
      • (pour restreindre => remove_method :nom_de_method ) ou¬†
      • undef(:methode)
    • M√©thode singleton
      • a=Essai.new
      • class << a
      • ¬† def methode_singleton
      • ¬† end
      • end
      • Ou¬†
      • def a.perso
      • ..
      • end
    • Heritage
      • (unique)¬†
      • class Voiture < Vehicule
      • ¬† def ..
      • ¬† def
      • end
        • Posiblit√© d'appeler la m√©thode 'super'¬†
        • Possibilit√© de rejeter l'h√©ritage¬† :remove_method(:method) /¬† undef
        • Utilisation de la methode : method_missing
      • ¬†
      • ¬†
    • Modules
      • Regroupe des fonctions et des classes
      • Permettent le 'mixin' et donc l'h√©ritage multiple¬†
      • ¬†
      • Utilisation:
      • require <nom_module>
      • class Voiture
      • include <Ressource>
      • ¬†
    • Mais on utilisera plutot¬† les it√©rateurs
      • M√©thodes des instances :
      • ¬†
      • Nombres :¬†
      • nb.dowto(1)
      • nb.upto(3)
      • nb.times do¬†
      • ...
      • end
    • It√©rateurs pour¬† les chaines:
      • (pas vraiment)
      • .each_byte¬†
      • It√©rateur pour les tableaux:
      • .each¬† (each_index)
      • .collect
      • .map (select , inject)
    • It√©rateur pour les Hashes
      • .each
      • .each_key
      • .each_values
      • Et surtout :¬†¬†¬†¬† .select
      • ¬†
    • Ecrire ses propres it√©rateurs
      • [1,2,'eric'].each do puts 'present'¬†
      • ¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬†¬† end¬†
      • Encore plus fort¬†
      • [1,2,'eric'].each do |item|¬†¬†
      • ¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† ¬† ¬† ¬†¬† puts item¬† ¬†¬†¬†
      • ¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬†¬† puts 'present'
      • ¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬† ¬†¬†¬†¬† end¬†
      • OU¬† [1,2,'eric'].each {|item| puts item ..}
    • Manip Classes - it√©rateurs -Doc
      • D√©velopper les classes d√©finies pour Cartes, Jeu¬† UneMain
      • ¬†
      • G√©n√©rer la doc par rdoc
    • Utilisation de 'yield'¬† (restituer)
      • def demo
      • ¬† puts¬† 'dans demo'¬†
      • ¬† puts 'demo'
      • ¬† yield
      • ¬† puts 'demo'
      • end
      • demo do¬† puts &quot;eric&quot; end
      • ¬†
      • OU¬†
      • demo¬† {¬† puts &quot;eric&quot;¬†¬† }
    • suite
      • def demo (param)
      • ¬† puts¬† 'dans demo'¬†
      • ¬† puts param
      • ¬† autre = 'coucou'
      • ¬† yield autre
      • ¬†¬†
      • end
      • ¬†
      • demo 'bonjour' do |suite| puts suite *2¬† end
    • Manip yield
      • Developper une fonction utilisant yield sans parametre
      • Developper une fonction utilisant yield avec un parametre en entr√©e
      • Developper une fonction utilisant yield effectuant une restitution
    • Op√©rations sur¬† les fichiers
      • Classique :
      • ¬† monfile =File.new('fichier','r')¬†
      • ...
      • monfile.close
      • ¬†
      • OU
      • ¬† File.open('fichier','r') do |monfile| ...
      • ¬† end
      • OU
      • ¬†¬† tableau = IO.readline s ('fichier','r')
      • ¬†
    • Manip sur les fichiers
      • Ouvrir un fichier en lecture par les deux methodes (File.new¬†
      • et File.open)¬†
      • ¬†
      • Lire , ligne par ligne¬†
      • Lire tout le fichier dans un tableau¬†
      • ¬†
      • Lire depuis stdin, √©crire dans stout¬† et stderr¬†
    • Les expressions r√©guli√®res
      • Dans des conditions
      • ¬† if¬† variable=~/trouve/
      • ou if /trouve/.match(subject)¬†
      • Pour les substitutions :¬†
      • ¬† &quot;machaine&quot;.gsub(/ma/,&quot;ta&quot;)¬† (attention : gsub et gsub!)
      • La bonne pratique:
      • reg= /(et.+)(neiges)/
      • rech= reg.match('etoile-des-neiges')
      • rech.length (nb elements)
      • rech.to_a¬†¬†¬† (=>¬†¬† donne le resultat dans un tableau )
      • ..[2]¬† => 'neiges'
    • Manip expressions r√©guli√®res
      • Utilisation de gsub et gsub!
      • ¬†
        • Remplacer les 'a' par des 'o'
        • Enlever les espace de fin¬†
        • D√©couper une url en :¬†
        • protocole, serveur, ressource , param√®tre
      • ¬†
    • Dates
      • madate= Date.now
      • heure= madate.hours
      • monformat= madate.strftime('%d/%m/%y')¬†
      • ¬†
      • Pour des choses plus complexes:¬†
      • require 'date'
    • rdebug
      • Utilisation par ruby -rdebug <nom_du_programme>
      • Ou par¬†
      • rdebug <nom_du_programme>
      • ¬†
      • Commande:¬†
      • n: next
      • s: step (next en profondeur)
      • p: affiche
      • b: point d'arret
      • c: continu
      • h: help
    • Duck typing
      • Pour etre de type canard il suffit de se comporter comme un canard.
      • => Eviter de tester le type dans les m√©thodes
      • Utiliser¬† respond_to :method¬†¬†¬† (au lieu de)¬† is_a?
    • Module Test::Unit
      • D√©finir une s√©rie de test (new,mise √† jour etc.)¬†
      • ¬†
      • V√©rifier la concordance entre le r√©sultat attendu et obtenu
      • Utilisation des clauses :
      • assert_equal( expected, actual, [message] ) assert_not_equal( expected, actual, [message] )
      • (nil ,match, instance_of)
      • Actions pr√©alables
      • def setup
      • end
    • Attention !!!!
      • a=&quot;eric&quot;¬†
      • b=a
      • puts a
      • puts b
      • a=&quot;german&quot;
      • puts a
      • puts b
      • ¬†
      • b=a
      • a << ' eric'¬†¬† (ou¬† a[0] = &quot;T&quot;¬† )
      • puts a
      • puts b
    • Pour terminer
      • Doc int√©gr√©e : rdoc
      • Serveur web de doc (gem server)¬†
      • Tests
    • Je n'ai pas parl√© de:
        • M√©thodes priv√©es , publiques ou prot√©g√©es
        • La gestion des exceptions
        • La gestion de r√®gles de nommage des modules
        • Des modules 'enumerable' et 'comparable'
        • De YAML
    • Manip
      • G√©n√©rer les tests¬† pour les classes Jeu , carte