0% ont trouvé ce document utile (0 vote)
9 vues28 pages

Support Ruby

Ce document est un guide complet sur le langage de programmation Ruby, incluant son installation, les éditeurs recommandés, et des concepts fondamentaux tels que le modèle MVC, les objets, et les structures de contrôle. Il couvre également des aspects pratiques comme la connexion à des bases de données et l'utilisation de Ruby on Rails pour le développement web. Enfin, il fournit des exemples de code et des explications sur les fonctionnalités du langage.

Transféré par

drevet.olivier
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
9 vues28 pages

Support Ruby

Ce document est un guide complet sur le langage de programmation Ruby, incluant son installation, les éditeurs recommandés, et des concepts fondamentaux tels que le modèle MVC, les objets, et les structures de contrôle. Il couvre également des aspects pratiques comme la connexion à des bases de données et l'utilisation de Ruby on Rails pour le développement web. Enfin, il fournit des exemples de code et des explications sur les fonctionnalités du langage.

Transféré par

drevet.olivier
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 28

Support Ruby - 1 / 28 -

Sommaire
I. Présentation ........................................................................................................................................................... 3
A. Modèle Mvc ....................................................................................................................................................................................... 3
B. Historique........................................................................................................................................................................................... 3

II. Installation ............................................................................................................................................................. 4


A. Installer Ruby sous Windows.......................................................................................................................................................... 4
B. Connecteurs ....................................................................................................................................................................................... 6
C. Accès aux base................................................................................................................................................................................... 6

III. Les éditeurs............................................................................................................................................................ 7


A. Scite ..................................................................................................................................................................................................... 7
B. Netbeans............................................................................................................................................................................................. 7
C. Installation.......................................................................................................................................................................................... 8
D. Utilisation ......................................................................................................................................................................................... 11

IV. Le langage ............................................................................................................................................................15


A. Hello the World............................................................................................................................................................................... 15
B. Paramètres de la ligne de Commande.......................................................................................................................................... 15
C. Les chaînes ....................................................................................................................................................................................... 15
1. Here Doc..................................................................................................................................................................................... 15
2. Extraction.................................................................................................................................................................................... 15
3. Quelques fonctions.................................................................................................................................................................... 15
4. Interpolation ............................................................................................................................................................................... 15
5. Expression régulière .................................................................................................................................................................. 15
D. Les fonctions.................................................................................................................................................................................... 16
E. Variables ........................................................................................................................................................................................... 16
1. Nommage.................................................................................................................................................................................... 16
2. Préfixe .......................................................................................................................................................................................... 16
F. Tableaux............................................................................................................................................................................................ 16
G. Date ................................................................................................................................................................................................... 16
H. Structure du contrôle...................................................................................................................................................................... 16
1. Alternative ................................................................................................................................................................................... 16
2. Répétitives ................................................................................................................................................................................... 17
3. Ecritures simplifiées................................................................................................................................................................... 17
4. expression ternaire ..................................................................................................................................................................... 17
5. Case .............................................................................................................................................................................................. 17
6. Gestion de blocs......................................................................................................................................................................... 17
7. Itération ....................................................................................................................................................................................... 17
8. Gestion d'erreurs........................................................................................................................................................................ 17
9. Les modules ................................................................................................................................................................................ 18

V. Les objets..............................................................................................................................................................19
A. Classe statique.................................................................................................................................................................................. 19
B. Création d'une classe ...................................................................................................................................................................... 19
C. La portée........................................................................................................................................................................................... 19
D. Création d'un objet ......................................................................................................................................................................... 19
E. Héritage............................................................................................................................................................................................. 19
F. Utilisation d'une classe héritée ...................................................................................................................................................... 20
G. Lire une propriété............................................................................................................................................................................ 20
H. Classe statique.................................................................................................................................................................................. 20
I. connexion à MySql.......................................................................................................................................................................... 20
1. La classe....................................................................................................................................................................................... 20
2. Le code......................................................................................................................................................................................... 21

Denis Szalkowski 01/02/2008


Support Ruby - 2 / 28 -

VI. Rails ......................................................................................................................................................................22


A. Installation de WebBricks.............................................................................................................................................................. 22
B. Structure de Rails............................................................................................................................................................................. 22
C. Création d'un contrôleur................................................................................................................................................................ 22
D. La vue................................................................................................................................................................................................ 22
E. Configuration de la base................................................................................................................................................................. 23
F. création des databases et des tables.............................................................................................................................................. 24
1. Création des bases...................................................................................................................................................................... 24
2. Création du script de crétaion de tables ................................................................................................................................. 24
3. Modification de table................................................................................................................................................................. 25
4. Type de champ ........................................................................................................................................................................... 25
5. Création des tables ..................................................................................................................................................................... 25
G. Création d'un contrôleur................................................................................................................................................................ 25
H. La vue................................................................................................................................................................................................ 25
I. Les lookups ...................................................................................................................................................................................... 26
J. La gestion des formulaires ............................................................................................................................................................. 26
1. La page text.html........................................................................................................................................................................ 26
2. Le contrôleur............................................................................................................................................................................... 26
3. La vue........................................................................................................................................................................................... 26
4. Le formulaire Ruby.................................................................................................................................................................... 26
K. La feuille de style............................................................................................................................................................................. 27
L. Conversion ....................................................................................................................................................................................... 27
M. Envoi de mail................................................................................................................................................................................... 27

VII. Ressources ............................................................................................................................................................28

Denis Szalkowski 01/02/2008


Support Ruby - 3 / 28 -

I. Présentation
A. Modèle Mvc
• Les modèles qui sont les classes qui assurent la gestion des données : la structure de ces classes étant déterminer par Rails à
partir de la base de donnée
• Les vues qui déterminent l'affichage des informations : généralement une combinaison de html et de ruby .rhtml
• Les contrôleurs qui réagissent aux actions de l'utilisateur et qui répondent généralement à travers la vue : on peut créer
facilement des squelettes de contrôleurs pour les actions simples. Ruby on Rails contraint le développeur à utiliser une
arborescence qui sépare ces trois composantes, il y a donc obligatoirement les répertoires « Model », « View », « Controller »
dans chaque projet Rails.

B. Historique
1995 Création de Ruby par Matsumoto
2001 Création de Rubygems par Ryan Leavengood
2004 Création de RoR

Denis Szalkowski 01/02/2008


Support Ruby - 4 / 28 -

II. Installation
A. Installer Ruby sous Windows

Denis Szalkowski 01/02/2008


Support Ruby - 5 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 6 / 28 -

B. Connecteurs
DB2 http://raa.ruby-lang.org/project/ruby-db2
MySQL http://www.tmtm.org/en/mysql/ruby
Oracle http://rubyforge.org/projects/ruby-oci8
Postgres http://ruby.scripting.ca/postgres/
SQLite http://rubyforge.org/projects/sqlite-ruby
Postgresql from the Ruby-DBI http://rubyforge.org/projects/ruby-dbi

C. Accès aux base


gem search mysql --remote
gem install mysql
gem install ruby-postgres

Denis Szalkowski 01/02/2008


Support Ruby - 7 / 28 -

III. Les éditeurs


A. Scite
Lors de l'installation de Ruby sous Windows, l'éditeur Gpl Scite qui utilise la coloration syntaxique est installé sur votre
système. L'outil est intéressant. Il n'offre pas les caractéristiques d'un véritable IDE.

B. Netbeans
Eclipse est en passe de devenir un standard dans le monde du développement. De mon point de vue, il est une véritable usine
à gaz. Netbeans est un éditeur qui a les qualités d'un grand et demeure bien moins gourmand qu'Eclipse.

Denis Szalkowski 01/02/2008


Support Ruby - 8 / 28 -

C. Installation

Denis Szalkowski 01/02/2008


Support Ruby - 9 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 10 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 11 / 28 -

D. Utilisation

Denis Szalkowski 01/02/2008


Support Ruby - 12 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 13 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 14 / 28 -

Denis Szalkowski 01/02/2008


Support Ruby - 15 / 28 -

IV. Le langage
A. Hello the World
#!c:/ruby/bin/ruby -w
puts "Hello, World!"

B. Paramètres de la ligne de Commande


puts ARGV.join('-')

C. Les chaînes

1. Here Doc
texte = <<EOF
Ceci est un test
EOF

2. Extraction
texte="Ceci est un texte"
puts texte.slice(5,3)
puts texte[5,3]

3. Quelques fonctions
"Test" + "Test "TestTest
"Test".capitalize Test
"Test".downcase test
"Test".chop Tes
"Test".hash -98625764
"Test".next Tesu
"Test".reverse tseT
"Test".sum 416
"Test".swapcase tEST
"Test".upcase TEST
"Test".upcase.reverse TSET
"Test".upcase.reverse.next TSEU

4. Interpolation
puts "#{x} + #{y} = #{x + y}"

5. Expression régulière
^ Début de chaîne
$ Fin de chaîne
\A Anchor for thestart of a string
\Z Anchor for the end of a string
. Any character
\w lettre, chiffre, tiret bas
\W symétrique à \w
\d N'importe quel chiffre
\D Autre que des chiffres
\s Tab, espace, fin de ligne
\S Symétrique à \s

* 0, n occurrences
+ 1, n occurrences
? N'importe quel caractère
{x} x occurrences

Denis Szalkowski 01/02/2008


Support Ruby - 16 / 28 -

{x,y} entre x et y occurrences

D. Les fonctions
#!c:/ruby/bin/ruby -w
texte="Denis Szalkowski"
nombre=-1942
puts texte.length
puts texte.index("z")
puts nombre.abs
def aQueCoucou(monNom)
# result = "A que coucou,\n " + monNom
result = "A que coucou,\n #{monNom}"
return result
end
puts aQueCoucou(texte)

E. Variables
Variables

1. Nommage
Lettres, chiffres (sauf 1ère position), tiret bas

2. Préfixe
$ variables globaes
@@ instances
@ classe

F. Tableaux
#!c:/ruby/bin/ruby -w
arrayA = [ 1, 'un texte', 3.14 ]
puts arrayA[0]
arrayA[2] = nil
puts arrayA
arrayEmpty1 = []
arrayEmpty2 = Array.new
arrayB = %w{ Ceci est un test }
puts arrayB[0]
puts arrayB[3]
assoC = {
'0' => 'Dimanche',
'1' => 'Lundi'
}
puts assoC['0']

fonctions length et type, sort, reverse, join

G. Date
t=Time.now
puts t
puts t.sec, t.min, t.hour, t.day, t.month, t.year, t.wday, t.yday, t.isdst, t.zone

H. Structure du contrôle

1. Alternative
if...
elseif...
else
end

Denis Szalkowski 01/02/2008


Support Ruby - 17 / 28 -

2. Répétitives
while...
end
until ...
end

3. Ecritures simplifiées
instruction if condition
instruction while condition

4. expression ternaire
age = 10
type = age < 18 ? "enfant" : "adulte"
puts "Vous êtes " + type

5. Case
fruit = "orange"
case fruit
when "orange"
color = "orange"
when "apple"
color = "green"
when "banana"
color = "yellow"
else
color = "unknown"
end

6. Gestion de blocs
#!c:/ruby/bin/ruby -w
def callBlock
yield
yield
end
callBlock { puts "Hello" }

7. Itération
#!c:/ruby/bin/ruby -w
jours = %w( Lun Mar Mer Jeu Ven Sam Dim )
jours.each { |jour| puts jour }
jours.each do |jour|
print jour, " -- "
end
puts "\n"
5.times { print "*" }
puts "\n"
0.upto(9) {|i| print i }
puts "\n"
('a'..'z').each {|car| print car }

1.upto(5) { ...code to loop here... }


10.downto(5) { ...code to loop here... }
0.step(50, 5) { ...code to loop here... }

8. Gestion d'erreurs
begin

Denis Szalkowski 01/02/2008


Support Ruby - 18 / 28 -

f = File.open('c:\boot.ini')
f.each { |l| puts "#{l}" }
rescue
puts "fichier inexistant"
else
puts "pas d\'erreur"
ensure
f.close unless f.nil?
end

9. Les modules

a) Module
module Modinfo
def info
"info"
end
end

b) Require et Load
Par défaut, la commande Require pointe vers C:\ruby\lib\ruby\1.8 ou le répertoire courant.
Vous devez employer ou load ou require.
load "modinfo.rb"
require "Modinfo"
class Test
def initialize(prop)
@prop=prop
end
include Modinfo
end
oTest=Test.new("test")
puts oTest.info

Denis Szalkowski 01/02/2008


Support Ruby - 19 / 28 -

V. Les objets
A. Classe statique
class Fixnum
def seconds
self
end
def minutes
self * 60
end
def hours
self * 60 * 60
end
def days
self * 60 * 60 * 24
end
end
puts Time.now
puts Time.now + 10.minutes
puts Time.now + 16.hours
puts Time.now - 7.days

B. Création d'une classe


#!c:/ruby/bin/ruby -w
class Tiers
attr_reader :rs, :cp, :ville
def initialize(rs, cp, ville)
@rs=rs
@cp=cp
@ville=ville
end

end

C. La portée
Les méthodes ou propriétés peuvent être privées, publiques ou protégées.
# public :method1, :method4
# protected :method2
# private :method3

D. Création d'un objet


oTiers = Tiers.new("Dsfc", 27800,"Saint Eloi de Fourques")
puts oTiers.inspect
puts oTiers.to_s
puts oTiers.rs

E. Héritage
class Client < Tiers
attr_writer :credit
attr_reader:credit

def initialize(rs, cp, ville,credit)


super(rs, cp, ville)

@credit = credit

Denis Szalkowski 01/02/2008


Support Ruby - 20 / 28 -

end
end

F. Utilisation d'une classe héritée


oClient = Client.new("Dsfc", 27800,"Saint Eloi de Fourques",34000)
oClient.credit=56000
puts oClient.credit

G. Lire une propriété


#!c:/ruby/bin/ruby -w
class Tiers

def initialize(rs, cp, ville)


@rs=rs
@cp=cp
@ville=ville
end
def get_rs
@rs

end
def rs
return @rs
end
end
oTiers=Tiers.new("test",79000,"Niort")
puts oTiers.get_rs
puts oTiers.rs

H. Classe statique
class Stat
class << self
define_method :text1 do
"test1"
end
end
def self.text2
"test2"
end

end
puts Stat::text2

I. connexion à MySql

1. La classe
load "C:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active_record/vendor/mysql.rb"
#require "mysql"
class MonMysql
@@res=nil

def initialize(host,user,pwd,bd)

begin
@@conn = Mysql.real_connect(host,user,pwd,bd)
rescue Mysql::Error => e
puts "#{e.errno} : #{e.error}"

Denis Szalkowski 01/02/2008


Support Ruby - 21 / 28 -

end
end
def req(sql)
@@res=@@conn.query(sql)
end
def liste
# [email protected]_rows
# while row = @res.fetch_row do
# printf "%s, %s\n", row[0], row[1]
# end
@@res.each do |row|
printf "%s, %s\n", row[0], row[1]
end
end
def destroy
if @@res
@@res.free
@@res=nil
puts "Libération mémoire"
end
puts "On ferme"
@@conn.close
@@conn=nil
end
end

2. Le code
require "monmysql"
oMySql=MonMysql.new("localhost","root","root","crm_development")
oMySql.req("SELECT * from clients")
oMySql.liste
oMySql.destroy
oMySql=nil

Denis Szalkowski 01/02/2008


Support Ruby - 22 / 28 -

VI. Rails
A. Installation de WebBricks
gem install rails--include-dependencies
gem update rails
rails -d mysql demo
cd demo
ruby script/server
ruby script/server --port=80

B. Structure de Rails
app Code

C. Création d'un contrôleur


ruby script/generate controller Say
Ruby crée le fichier app/controllers/say_controller.rb.
class SayController<ApplicationController
def hello
end
end

D. La vue
app/views/say/hello.rhtml
<html>
<head>
<title>Hello, Rails!</title>
</head>
<body>
<h1>Hello from Rails!</h1>
<p>
<%=@time%>.
</p>
<%=link_to "Hello from rails",:action=> "hello" %>
</body>
</html>

Denis Szalkowski 01/02/2008


Support Ruby - 23 / 28 -

E. Configuration de la base

# SQLite version 3.x


# gem install sqlite3-ruby (not necessary on OS X Leopard)
#development:
# adapter: sqlite3
# database: db/development.sqlite3
# timeout: 5000

# Warning: The database defined as 'test' will be erased and


# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
#test:
# adapter: sqlite3
# database: db/test.sqlite3
# timeout: 5000

#production:
# adapter: sqlite3
# database: db/production.sqlite3
# timeout: 5000
login: &login
adapter: mysql
username: root
password: root
host: localhost

development:

Denis Szalkowski 01/02/2008


Support Ruby - 24 / 28 -
<<: *login
database: development

test:
<<: *login
database: test

production:
<<: *login
database: production

development:
adapter: mysql
database: crm_development
user: root
password: root
test:
adapter: mysql
database: crm_test
user: root
password: root

production:
adapter: mysql
database: crm_production
user: root
password: root

F. création des databases et des tables

1. Création des bases


rake db:create:all

2. Création du script de crétaion de tables


ruby script/generate scaffold Client rs:string ville:string

Rails génère une table à l'aide du script db/migrate/001_create_clients.rb


class CreateClients < ActiveRecord::Migration
def self.up
create_table :clients do |t|
t.string :rs
t.string :ville

t.timestamps
end
end

def self.down
drop_table :clients
end
end

Denis Szalkowski 01/02/2008


Support Ruby - 25 / 28 -

3. Modification de table

4. Type de champ
string
integer
text
float
datetime
date
time
timestamps
binary

5. Création des tables


rake db:migrate

G. Création
Création d'un contrôleur
ruby script/generate controller Say
Ruby crée le fichier app/controllers/say_controller.rb.
class SayController<ApplicationController
def hello
end
end

H. La vue
app/models/client.rb
class Client < ActiveRecord::Base
validates_presence_of :rs, :ville
validates_presence_of : cp, :message=>"Code postal obligatoire"
validates_length_of :rs, :within=>1..20
validates_length_of :rs, :maximum=>30
validates_uniqueness_of :rs, :message => "La ville existe"
validates_numericality_of :cp
validation_confirmation_of :password , :message=>"Retapez le mot de passe"
validates_acceptance_of :check, :message=>"A cocher"
protected
def validate
errors.add(:cp, "Prix obligatoire" ) if cp >=1000 || cp <97999

Denis Szalkowski 01/02/2008


Support Ruby - 26 / 28 -

end
end

I. Les lookups

J. La gestion des formulaires

1. La page text.html
Elle doit être stockée dans le répertoire public de l'application Rails
<html>
<head>
<title>Page Text</title>
</head>
<body>

<form action = "/text/nom" >


<!-- <form action = "/text/nom" method = "post" >-->
Votre nom<br />
<input type="text" name="txtNom">
<input type="submit" />
</form>
</body>
</html>

2. Le contrôleur
ruby script/generate controler Text
Editez le fichier /app/controllers/text_controller.rb
class TextController < ApplicationController
def nom
@data = params[:txtNom]
end
end

3. La vue
Le code doit être sauvegardé dans le fichier /app/views/text/nom.rhtml
<html>
<head>
<title>Lecture du contenu du champ</title>
</head>
<body>
Vous êtes<%= @data %>.
</body>
</html>

4. Le formulaire Ruby
<html>
<head>
</head>
<body>
<%= start_form_tag ({:action => nom}, {:method => post}) %>
Entrez votre nom
<br />
<%= text_field_tag (txtNom, , {size => 30}) %>

Denis Szalkowski 01/02/2008


Support Ruby - 27 / 28 -

<input type="submit" />


<%= end_form_tag %>
</body>
</html>

K. La feuille de style
/public/stylesheets/style.css

L. Conversion
<%=number_to_currency(@champ) %>
number_to_human_size
number_to_percentage
number_to_phone
champ.strftime("%d %B %Y")

M. Envoi de mail
Editez le fichier environnement.rb

Denis Szalkowski 01/02/2008


Support Ruby - 28 / 28 -

VII. Ressources
http://fairleads.blogspot.com/2007/12/rails-20-and-scaffolding-step-by-step.html
http://florent.sabourin.eu/rails/rails.html
PAge 59 Agile Web Development With Ruby On Rails.pdf

Denis Szalkowski 01/02/2008

Vous aimerez peut-être aussi