Ruby Pour RoR

Embed Size (px)

Citation preview

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