Rails camp '15 presentation - Bootstrap v. Foundation v. Bourbon
Presentation Rails
-
Upload
frederic-de-villamil -
Category
Technology
-
view
3.177 -
download
1
description
Transcript of Presentation Rails
Ruby, Ruby on Rails
Ruby, Ruby on Rails
Cyril Mougel
20 avril 2008
Ruby, Ruby on RailsLe langage Ruby
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsLe langage Ruby
L’historique
Créé en 1993 par Yukihiro Matsumoto dit « Matz »Langage de scripting de haut niveauPlus qu’orienté objet : tout est objetApplique le principe de moindre surprise (POLS, principle ofleast surprise)Fonctionne sur les plateformes les plus populaires du marché(Linux, Windows, Mac)
Ruby, Ruby on RailsLes concepts de Ruby on Rails
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsLes concepts de Ruby on Rails
Le framework Ruby on Rails
Créé par David Heinemeier Hansson dit « DHH »Extrait de l’application BaseCamp de 37signalsPremière public release en 2004
Ruby, Ruby on RailsLes concepts de Ruby on Rails
Pourquoi Rails en Ruby ?
Multi-plateformesFortes facilités d’introspection et de réflexion
User.find_by_firstname_and_lastname ’David’, ’Hanson’has_many :galleries
Ruby, Ruby on RailsLes concepts de Ruby on Rails
Le concept de Ruby on Rails
Ruby on Rails est conçu par des développeurs, pour desdéveloppeursUn cadre de travail minimal et complet pour le développementWebConvention over ConfigurationDon’t Repeat Yourself (DRY)Say what you do, Do what you sayUn seul et unique langage pour tout faire
Ruby, Ruby on RailsLes concepts de Ruby on Rails
Rails est MVC
Model : ActiveRecordView : ActionViewController : ActionController
Ruby, Ruby on RailsLes concepts de Ruby on Rails
Chaque chose à sa place
Chaque dossier correspond à quelque chose et a son utilité propre
Ruby, Ruby on RailsComposant Model de Ruby on Rails
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsComposant Model de Ruby on Rails
Gestion de la Base de données
Système de gestion de migration(ActiveRecord : :Migration)Utilisation du pattern ActiveRecordGénération de nombreuses méthodes utilitaires à la volée
Ruby, Ruby on RailsComposant Model de Ruby on Rails
Migration de Base de donnée
Gestion incrémentale des fichiers de migrationsRetour avant/arrière au sein des migrationsUtilisation de méthodes Ruby au lieu des requêtes SQL pur
Ruby, Ruby on RailsComposant Model de Ruby on Rails
Exemple de Migration
Un exemple de fichier de migration :
1 c l a s s F i x P r o f i l e s < Act i v eReco rd : : M ig r a t i on2 def s e l f . up3 c r e a t e_tab l e : p r oduc t s do | p |4 p . s t r i n g : t i t r e , : l i m i t => 1005 end67 remove_column : u s e r s , : p r o f i l e _ i d8 add_column : u s e r s , : p r o f i l e_ i d , : i n t e g e r9 admin_id = P r o f i l e . f i nd_by_labe l ( ’ admin ’ ) . i d
10 User . upda te_a l l ( " p r o f i l e_ i d ␣=␣#{admin_id}" )11 end1213 def s e l f . down14 drop_tab le : p r oduc t s1516 remove_column : u s e r s , : p r o f i l e _ i d17 add_column : u s e r s , : p r o f i l e_ i d , : i n t e g e r , : d e f a u l t => 118 end19 end
Ruby, Ruby on RailsComposant Model de Ruby on Rails
Utilisation d’ActiveRecord
Exemple de fichier qui mappe la table Projects qui possèdent 6champs :
Code de la classe de mapping
1 c l a s s P r o j e c t < Act i v eReco rd : : Base2 end
Exemple d’utilisation de la classe de mapping
1 p r o j e c t 1 = P r o j e c t . new2 p r o j e c t 1 . t i t l e = ’EDF␣ E n t r e p r i s e ’3 p r o j e c t 1 . save45 p r o j e c t 2 = P r o j e c t . c r e a t e ( : t i t l e => ’GARI ’ )6 p r o j e c t 2 . d e s t r o y78 a l l_P r o j e c t s = P r o j e c t . f i n d : a l l
Ruby, Ruby on RailsComposant Model de Ruby on Rails
les méthodes de classe (correspondant au static de Java)accessibles pour la classe Project
Et bien-sûr toutes les méthodes accessibles en directement par laClasse :
Project.find :all
Project.find_by_title ’EDF Entreprise’
Project.find_by_description ’un site’
Project.find_by_title_and_description’EDF’, ’site’
Project.count :all
Project.count_by_title ’EDF Entreprise’
Project.count_by_description ’un site’
Project.count_by_title_and_description ’EDF’,’site’
etc. . .
Ruby, Ruby on RailsComposant Model de Ruby on Rails
le système de validation du modèle
Multiples systèmes de gestion directement dans le cycle de Vie del’objet modéle pour empêcher l’enregistrement en base de donnéesd’informations erronées
1 c l a s s P r o j e c t < Act i v eReco rd : : Base2 va l i d a t e s_p r e s en c e_o f : t i t l e3 v a l i d a t e s_p r e s en c e_o f : d e s c r i p t i o n4 va l i d a t e s_un i qu ene s s_o f : t i t l e5 end
Ruby, Ruby on RailsComposant Model de Ruby on Rails
Les associations
1 c l a s s P r o j e c t < Act i v eReco rd : : Base2 has_many : t a s k s3 end45 c l a s s Task < Act i v eReco rd : : Base6 be longs_to : p r o j e c t7 end89 mon_project . t a s k s
10 mon_project . t a s k s . count1112 mon_project . t a s k s . f i n d ( : a l l , : o r d e r => ’ t i t l e ’ )13 mon_project . t a s k s << Task . new ( : t i t l e => ’ foo ’ )1415 mon_task . p r o j e c t
Ruby, Ruby on RailsComposant Controller de Ruby on Rails
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsComposant Controller de Ruby on Rails
1 méthode, 1 URL
Url implicite à partir du nom de contrôleur et du nom de laméthodeUtilisation de routes nomméesDéfinition implicite du fichier de Vue
Ruby, Ruby on RailsComposant Controller de Ruby on Rails
RESTFULL
REST (Representational State Transfer)Basé sur les 4 verbes HTTP :
POST (create)GET (show)PUT (update)DELETE (delete)
Utilisation des verbes simples avec URL correspondanteFacilité de création d’une API
Ruby, Ruby on RailsComposant Controller de Ruby on Rails
Exemple de controller
1 c l a s s P r o j e c t s C o n t r o l l e r < A p p l i c a t i o n C o n t r o l l e r23 # http :// l o c a l h o s t :3000/ p r o j e c t s4 def i n d e x5 @p r o j e c t s = P r o j e c t . f i n d : a l l6 end78 # http :// l o c a l h o s t :3000/ p r o j e c t s /19 def show
10 @p ro j e c t = P r o j e c t . f i n d params [ : i d ]11 end1213 end
Ruby, Ruby on RailsComposant View de Ruby on Rails
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsComposant View de Ruby on Rails
Les helpers
les taglibs de Ruby on Rails1 helper par controller par défautréutilisation des manipulations de vuesde nombreuses méthodes existantes dans l’API
Ruby, Ruby on RailsComposant View de Ruby on Rails
ActionView
app/views/project/list.html.erb
1 <% @pro j e c t . each do | p r o j e c t | do %>2 <h1><%= p r o j e c t . t i t l e %></h1>3 <p><%= t r un c a t e ( p r o j e c t . d e s c r i p t i o n , 80) %></p>4 <p><%= l i nk_to " s u i t e . . . " , : a c t i o n => "show" , : i d => p r o j e c t . i d %></p>5 <% end %>
app/views/project/show.html.erb
1 <h1><%= h @p ro j e c t . t i t l e %></h1>23 <p><%= @pro j e c t . d e s c r i p t i o n %></p>4 <%= rende r : p a r t i a l => @p ro j e c t . t a s k s %>
app/views/task/_task.html.erb
1 <p><%= ta sk . d e s c r i p t i o n %></p>2 <p><%= ta sk . updated_at %></p>
Ruby, Ruby on RailsLes tests
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsLes tests
Les tests unitaires
Dans le dossier /test/unitsTest sur les modélesFacilité de créer des jeux de testsBase de données indépendanteChaque test dans une transaction et ROLLBACK à la fin dechaque test.
Ruby, Ruby on RailsLes tests
Les tests fonctionnels
Dans le dossier /test/functionalsTest sur les contrôleursMême système d’injection des jeux de donnéesAssertions spécifiques avec vérification du DOM
Ruby, Ruby on RailsOutils de développement
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsOutils de développement
Les environnements de développement
Netbeans depuis la version 6.0RadRails, plugin d’eclipseRuby In Steel, add-on de Microsoft Visual StudioTextMateVim/Emacs
Ruby, Ruby on RailsOutils de développement
Outils d’aide au développement
Shell Interactif, irbDebuggerProfilerCouverture de code
Ruby, Ruby on RailsJava, JRuby et Ruby On Rails
1 Le langage Ruby
2 Les concepts de Ruby on Rails
3 Composant Model de Ruby on Rails
4 Composant Controller de Ruby on Rails
5 Composant View de Ruby on Rails
6 Les tests
7 Outils de développement
8 Java, JRuby et Ruby On Rails
Ruby, Ruby on RailsJava, JRuby et Ruby On Rails
JRuby implémentation Java de Ruby
JRuby 1.0 sortie en Juin 2007, 1.1 en Avril 2008Entièrement compatible avec Ruby 1.8.6Intégration avec toute bibliothèque Java existante
Ruby, Ruby on RailsJava, JRuby et Ruby On Rails
JRuby on Rails
Depuis JRuby 1.0.2, possibilité de faire tourner Ruby On RailsPossibilité de générer un WAR avec le plugin GoldspikeWar généré utilisable dans un serveur d’application
Ruby, Ruby on RailsJava, JRuby et Ruby On Rails
demo