Ruby Pour RoR
-
Upload
eric-german -
Category
Technology
-
view
1.530 -
download
0
Transcript of Ruby Pour RoR
PowerPoint Presentation
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,
Anne : 1993
hrit de Perl , Python , PHP, java
Interprt et objet
Pouss par Rails (framework MVC)
Rails : David Hansson (2004)
Vrification et installation
ruby -v (interprteur de commande)
irb v (interpreteur interactif)
gem -v (gestion des modules gemmes)
rdoc -v (gnrateur 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 pralablement :apt-get install
libyaml-ruby
apt-get install libzlib-ruby)
Manip initiale
Tester la prsence de ruby
Tester la prsence de irb
Tester la prsence 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
Installation de Rails
gem install rails
Installation des drivers des bases de donnes par gem.
Bases supportes :
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 caractres
Les nombres
Les tableaux =[..]
Les tableaux associatifs ={..}
Les symboles :nom
Les IDE
Jedit + plugin ruby
Radrails (aptana studio et eclipse)
SciTe
Gedit
(emacs , vim)
Dmarrage
Les chaines de caractres
a = "eric"
puts a
Mise en pratique :
Fichier essai.rb
#!/usr/bin/ruby
a = "eric"
puts a
puis lancement par ruby ./essai.rb
Ou
Par irb
Par http://tryruby.hobix.com/
Manip demarrage
Raliser un programme qui affiche 'bonjour tout le monde'
(hello.rb)
Le lancer par ruby
Le lancer par irb (load
Le raliser en ligne par irb et TryRuby.
Les nombres
b=1
puts b
b=23.4
puts b
Mthode sur les chaines: String.methode
capitalize et capitalize! to_i
'+' et intervalle ouvert ou ferm..
range => ..
liste => [ ]
end
(until )
Les fonctions
Dfinition
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
defcube(*valeur)
valeur[0]**3
end
defcubeET (v,*valeur)
def cubeET (v,valeur=4)
Parametres nomms
defcubeET (*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
Cration (new)
class Chanson
definitialize(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
definitialize(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 mthodes natives
to_s (to string )
inspect (sortie amliore)
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
Crer une classe 'Carte' (couleur ,valeur, nom_usage)
methodes:
def initialize(couleur,valeur)
def to_humain(v)
def to_s
Crer une classe 'Jeu' (32 cartes)
def initialize(nb=32)
def affiche
def melange
def tirage(nb=1)
Crer 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)
Mthode singleton
a=Essai.new
class Eviter de tester le type dans les mthodes
Utiliser respond_to :method (au lieu de) is_a?
Module Test::Unit
Dfinir une srie de test (new,mise jour etc.)
Vrifier la concordance entre le rsultat attendu et obtenu
Utilisation des clauses :
assert_equal( expected, actual, [message] )
assert_not_equal( expected, actual, [message] )
(nil ,match, instance_of)
Actions pralables
def setup
end
Attention !!!!
a="eric"
b=a
puts a
puts b
a="german"
puts a
puts b
b=a
a