La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Zlab.fr:~/jdll zifro$ rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments.

Présentations similaires


Présentation au sujet: "Zlab.fr:~/jdll zifro$ rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments."— Transcription de la présentation:

1 zlab.fr:~/jdll zifro$ rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create components create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create script/process create test/fixtures create test/functional create test/integration create test/mocks/development create test/mocks/test create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache create tmp/pids create Rakefile create README create app/controllers/application.rb create app/helpers/application_helper.rb create test/test_helper.rb create config/database.yml create config/routes.rb create public/.htaccess create config/boot.rb create config/environment.rb create config/environments/production.rb create config/environments/development.rb create config/environments/test.rb create script/about create script/breakpointer create script/console create script/destroy create script/generate create script/performance/benchmarker create script/performance/profiler create script/process/reaper create script/process/spawner create script/process/inspector create script/runner create script/server create script/plugin create public/dispatch.rb create public/dispatch.cgi create public/dispatch.fcgi create public/404.html create public/500.html create public/index.html create public/favicon.ico create public/robots.txt create public/images/rails.png create public/javascripts/prototype.js create public/javascripts/effects.js create public/javascripts/dragdrop.js create public/javascripts/controls.js create public/javascripts/application.js create doc/README_FOR_APP create log/server.log create log/production.log create log/development.log create log/test.log zlab.fr:~/jdll zifro$ cd demo/zlab.fr:~/jdll/demo zifro$ ruby script/server start=> Booting Mongrel (use 'script/server webrick' to force WEBrick)=> Rails application starting on http://0.0.0.0:3000=> Call with -d to detach=> Ctrl-C to shutdown server** Starting Mongrel listening at 0.0.0.0:3000** Starting Rails with jdll environment...** Rails loaded.** Loading any Rails specific GemPlugins** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).** Rails signals registered. HUP => reload (without restart). It might not work well.** Mongrel available at 0.0.0.0:3000** Don’t use CTRL-C to stop. Wait for lecture to end.http://0.0.0.0:3000 Welcome aboard You’re at JDLL! About your event’s environment Getting started Here’s how to get rolling: 1.Take a seat and enjoy the lecture Nobody needs to know your login and password.

2 Présentation de Ruby on Rails Journées Du Logiciel Libre 2007 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT

3 Avant-propos :: présentation de l’orateur Guillaume “Zifro” DESRAT guillaume.desrat@rubyfrance.org Rubyiste depuis 2002 Railer depuis 2005 Président de l’association (http://www.rubyfrance.org/) participe aux discussions sur les listes RubyFR et RailsFrancerticipe aux discussions s répond à vos questions sur IRC consultant informatique pour Cersi (http://www.cersi.com/)

4 Présentation de Ruby on Rails Journées Du Logiciel Libre 2007 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT un tour d’horizon de Ruby on Rails les concepts, les principes mis en oeuvre un aperçu du code Avant-propos : objet de la conférence

5 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Qu’est-ce que Ruby on Rails ? Ruby on Rails, c’est : un framework pour développer des applications Web écrit en Ruby basé sur le concept MVC orienté conventions plutôt que configuration libre ! disponible sous licence MIT (compatible GPL)

6 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Qu’est-ce que Ruby on Rails ? Ruby on Rails, c’est : le travail de David Heinemeier Hansson, alias DHH la version 1.0 mi-décembre 2005 la version 1.2.5, dite de maintenance, il y a quelques jours une version 2.0... prochainement un noyau allégé plus de fonctionnalités sous forme de plugins

7 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby

8 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby, c’est : un langage de programmation interprété écrit en C orienté objet (presque tout est objet) dynamique une aggrégation d’excellentes idées d’autres langages : Perl Eiffel Smalltalk / Squeak... libre ! disponible sous licences MIT (compatible GPL) et Ruby

9 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby, c’est : le travail de Yukihiro Matsumoto, alias Matz un projet depuis 1993 distribué depuis 1995 aujourd’hui en version 1.8.6 bientôt (Noël 2007 ?) la version 2.0 une réécriture complète de la VM plus rapide

10 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby, c’est : variable_locale = 5 $variable_globale = variable_locale CONSTANTE = 3.1415927 :un_symbole 'une chaîne de caractères' “valeur : #{variable_locale}\n” tableau = [1, 2, 3, 4] table_de_hachage = { 1 => 2, 3 => 4 } # des commentaires + - * / || && or and...

11 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby, c’est : class UneClasse @@variable_de_classe = 1 def initialize @variable_d_instance = ‘A’ @@variable_de_classe += 1 end def methode_d_instance puts @variable_d_instance end def UneClasse.methode_de_classe puts @@variable_de_classe end UneClasse.methode_de_classe # affiche 1 uc = UneClasse.new uc.methode_d_instance # affiche ‘A’ UneClasse.methode_de_classe # affiche 2

12 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : écrit en Ruby Ruby, c’est : warnings = info = 0 File.open('log.txt') do |f| f.readlines.each do |line| case line when /^WARNING/ warnings += 1 when /^INFO/ info += 1 end puts "There are #{warnings} warnings and #{info} info messages."

13 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC MVC

14 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC Modèle - Vue - Contrôleur un modèle pour la persistance des données une vue pour l’interface l’utilisateur un contrôleur pour coordonner le tout une idée de Trygve Reenskaug, en... 1979 initialement pensé pour les applications de bureau adapté au Web par la suite

15 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC Architecture MVC pour le Web : NavigateurNavigateur Base de données VueVue ContrôleurContrôleur 6 5 4 3 2 1 ModèleModèle

16 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC Des URL différentes : http://zlab.fr/books/show/1 site Web : zlab.fr contrôleur : Books action : show un paramètre, id, qui vaut 1 une convention ( ), paramétrable

17 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : des conventions ( ) Conventions vs. Configuration

18 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : des conventions ( ) Ruby on Rails privilégie l’utilisation de conventions plutôt que celle de fichiers de configuration : des comportements par défaut qui se posent en standard moins d’erreurs des conventions que l’on peut ignorer au besoin Un fichier de configuration tout de même : pour la connexion aux bases de données (format YAML)

19 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : des conventions ( ) Architecture sur le disque : une structure de fichiers complète MVC : séparation des modèles, vues et contrôleurs zlab.fr:~/jdll zifro$ ls demo README components doc public tmp Rakefile config lib script vendor app db log test zlab.fr:~/jdll zifro$ ls demo/app controllers helpers models views

20 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC ActiveRecord

21 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord ActiveRecord, c’est : le M dans MVC un Object Relational Mapper les tables sont représentées par des classes les enregistrements par des objets les champs par des attributs idtitleauthor 1The Ruby WayHal Fulton 2Ruby for RailsDavid A. Black Table “Books” <Book> id = 1 title = ‘The Ruby Way’ author = ‘Hal Fulton’ <Book> id = 1 title = ‘The Ruby Way’ author = ‘Hal Fulton’ <Book> id = 2 title = ‘Ruby for Rails’ author = ‘David A. Black’ <Book> id = 2 title = ‘Ruby for Rails’ author = ‘David A. Black’

22 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord Définition du modèle “Book”, pour représenter les livres enregistrés dans la base de données : class Book < ActiveRecord::Base end convention : une classe correspond à une table portant le même nom au pluriel inutile de définir les attributs, ActiveRecord les lit directement dans la base de données

23 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord On ne manipule que des objets Ruby : création d’un objet : initialisation de ses attributs : lecture des attributs : sauvegarde de l’objet : création et sauvegarde : suppression : b = Book.new b.title = 'Agile Web Development with Rails' b.author = 'Dave Thomas & David Heinemeier Hansson' b.title # renvoie 'Agile Web Development with Rails' b.save # renvoie true ou false b.save! # lève une exception en cas d’erreur b.create :title => 'Ruby in a Nutshell', :author => 'Matz' b.delete

24 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord ActiveRecord, c’est aussi : des méthodes pour interroger les modèles (des “finders”) idtitleauthor 1The Ruby WayHal Fulton 2Ruby for RailsDavid A. Black Table “Books” class Book < ActiveRecord::Base end b = Book.find 1 b = Book.find :first, :conditions => ['title LIKE ?', '%Ruby%'] b = Book.find :all, :conditions => ['title LIKE ?', '%Ruby%'] b = Book.find_by_author 'Hal Fulton' b = Book.find_by_title 'Ruby for Rails'

25 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord ActiveRecord, c’est aussi : la description des relations entre les modèles idtitleauthorcategory_id 1The Ruby WayHal Fulton1 2Ruby for RailsDavid A. Black1 Table “Books” idlabel 1Computing 2Fiction Table “Categories” class Book < ActiveRecord::Base belongs_to :category end class Category < ActiveRecord::Base end

26 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord Ce qui permet d’écrire : b = Book.find_by_title 'Ruby for Rails' b.category.label c = Category.find_by_label 'Fiction' b = Book.create :title => 'Winter Hauntering', :author => 'Dan Simmons', :category_id => c.id b = Book.new b.title = 'The man who disappears' b.author = 'Jeffery Deavers' b.category = c b.save

27 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord idtitleauthorcategory_id 1The Ruby WayHal Fulton1 2Ruby for RailsDavid A. Black1 Table “Books” idlabel 1Computing 2Fiction Table “Categories” class Book < ActiveRecord::Base belongs_to :category end Pour traverser la relation depuis l’autre modèle : class Category < ActiveRecord::Base has_many :books end

28 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord Ce qui permet d’écrire : c = Category.find_by_label 'Computing' c.books b = Book.create :title => 'Hyperion', :author => 'Dan Simmons' fiction = Category.find_by_label 'Fiction' fiction.books << b fiction.books.find :all, :conditions => ['author = ?', 'Dan Simmons']

29 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveRecord ActiveRecord, c’est aussi : des méthodes pour valider les données du modèle class Book < ActiveRecord::Base belongs_to :category validates_presence_of :title, :author validates_length_of :title, :minimum => 2 def validate return false if self.author == 'Why the luck stiff' end

30 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC ActionView

31 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView ActionView, c’est : le V dans MVC un système de génération d’interface Web, avec : des layouts (gabarits) des pages qui s’intègrent dans les layouts des balises spécifiques pour intégrer du code Ruby (eRB) des fichiers.rhtml dans app/views/

32 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView Exemple de layout : JDLL : Ruby on Rails demo permet de partager une charte graphique, une présentation, entre plusieurs pages est remplacé par le contenu de la vue qui est rendue

33 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView Exemple de vue : le code Ruby entre est exécuté le code Ruby entre est exécuté et sa sortie standard est écrite dans la vue Titre du livre par Auteur du livre page générée le matin du page générée l'après-midi du

34 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView Page générée : JDLL : Ruby on Rails demo Titre du livre par Auteur du livre page générée le matin du 19/10

35 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView La même vue, dynamique : la vue a accès aux variables du contrôleur elle ne contient normalement aucune logique si beaucoup de code est nécessaire pour un affichage, les helpers prennent le relais par page générée le matin du page générée l'après-midi du

36 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView Autre exemple, pour établir des liens : remplace avantageusement les plus on utilise ActionView... moins on écrit d’HTML <%= link_to 'Livre suivant', :controller => 'books', :action => 'show', :id => (params[:id] + 1) %>

37 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionView ActionView, c’est aussi : la possibilité de faire de l’AJAX (classique et RJS) la possibilité d’utiliser Prototype et script.aculo.us sans écrire une ligne de Javascript, seulement du Ruby #{@book.title} ", :update => 'author', :url => { :action => :plop } %> par auteur

38 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : basé sur MVC ActionController

39 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController ActionController, c’est : le C dans MVC le chef d’orchestre il contient la logique de l’application il interroge le modèle manipule les données récupérées détermine la vue à afficher à l’utilisateur

40 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController Définition du contrôleur “Books”, pour afficher les livres enregistrés dans la base de données : le contrôleur est une classe l’action est une méthode le nom de l’action permet de déduire la vue à rendre class BooksController < ApplicationController def show end

41 Base de données 3 2 ModèleModèle JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController NavigateurNavigateur VueVue ContrôleurContrôleur 6 5 4 1 http://zlab.fr/books/show/1 class BooksController < ApplicationController def show end

42 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController Définition du contrôleur “Books”, pour afficher les livres enregistrés dans la base de données : le contrôleur interroge le modèle à la fin de l’exécution, la vue est rendue, dans le layout class BooksController < ApplicationController def show @book = Book.find(params[:id]) end end

43 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController Gestion d’un paramètre “id” qui puisse être inexistant dans la base de données : class BooksController < ApplicationController def show begin @book = Book.find(params[:id]) render :layout => 'special' rescue redirect_to :controller => 'error', :action => 'raised', :id => params[:id] end end

44 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActionController Suppression d’un livre : class BooksController < ApplicationController def show... end def delete @book = Book.find(params[:id]) if @book.delete redirect_to :action => 'list' else flash[:notice] = 'Erreur à la suppression' render :action => 'show' end end

45 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails ActiveSupport

46 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveSupport ActiveSupport, c’est : le S dans Sympathique des extensions des classes de base de Ruby pour simplifier le développement améliorer la lisibilité du code

47 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ActiveSupport 1.kilobyte # => 1024 1.megabyte # => 1048576 2.days.before # => Wed Oct 17 10:01:17 +0200 2007 1.day.from_now # => Sat Oct 20 10:01:17 +0200 2007 7.days + 1.week # => 1209600 1.year / 1.day # => 365 nil.blank? # true ''.blank? # true {}.blank? # true [].blank? # true ActiveSupport, c’est :

48 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails Mais encore ?

49 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : mais encore ? Ruby on Rails, c’est : un framework qui intègre les tests dès le départ tests unitaires (modèles) tests fonctionnels (contrôleurs) ActionMailer des Web services REST des plugins pour quasiment tout ce qui peut être nécessaire du code Ruby bien écrit

50 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : outils de développement Outils

51 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : outils de développement De nombreux éditeurs et IDE ont un support Ruby et Rails : (g)vim (x)emacs SciTE / Scintilla NetBeans 6.x Eclipse, via les extensions Ruby Development Tools et RadRails TextMate FreeRIDE Ride-Me

52 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : outils de développement Des outils propres à Ruby et Rails : irb (interpréteur intéractif) rake (make façon Ruby, lanceur de tâches) gem (gestionnaire de “paquets” : bibliothèques, plugins,...) console (irb dans l’environnement de l’application Rails) irb(main):001:0> message = 'Bonjour' => "Bonjour" irb(main):002:0> message.downcase => "bonjour" irb(main):003:0> message.upcase => "BONJOUR" zlab.fr:~/jdll zifro$ gem list --local rails *** LOCAL GEMS *** rails (1.2.5) Web-application framework with template engine, control-flow layer, and ORM.

53 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ruby on Rails : ressources Ressources

54 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ressources en Français Sites Web : le portail RailsFrance (http://www.railsfrance.org/)http://www.railsfrance.org le portail RubyFrance (http://www.rubyfrance.org) le site officiel Ruby, en Français (http://www.ruby-lang.org/fr/) le site officiel Ruby, les nombreux blogs de la communauté francophone (http://greg.rubyfr.net/, http://bounga.org/,...) Listes de diffusion : RailsFrance, groupe Google (http://groups.google.com/)le (http://groups RubyFR-public, groupe Google Groupes de discussion : fr.comp.lang.ruby.lang.ruby Livres : Ruby on Rails, 2ème édition Ru Ruby et Rails Ruby par l’exemple Ruby in a Nutshell

55 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Ressources en Anglais Sites Web : le site officiel Ruby on Rails (http://www.rubyonrails.org/)http://www.rubyonrails.org le site officiel Ruby (http://www.ruby-lang.org/) les sites axés “Web 2.0” (PeepCode,...) les sites axés “Web 2. les nombreux blogs de la communauté Ruby et Rails (http://www.whytheluckystiff.net/,...) Listes de diffusion :diffusion : les listes officielles @rubyonrails.org les listes officie Ruby-Talk et Ruby-Core @ruby-lang.org Groupes de discussion : comp.lang.ruby Livres : Agile Web Development with Rails, 2nd edition Ruby for Rails Rails Recipes Programming Ruby The Ruby Way

56 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT C’est fini... Des questions ?

57 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT C’est fini... Merci !

58 JDLL 2007 - Présentation de Ruby on Rails - Guillaume “Zifro” DESRAT Licence de ce document Les contenus originaux de cette présentation sont diffusés sous licence Creative Commons, avec les options suivantes : paternité (obligation de mentionner l’auteur) pas d’utilisation commerciale (sans accord explicite) pas de modification le texte de la licence complète est disponible à l’adresse suivante : http://www.creativecommons.org/licenses/by-nc- nd/2.0/fr/http://www.creativecommons.org/licenses/by-nc- nd/2.0/fr/ toute autre utilisation nécessite un accord explicite et écrit de la part de l’auteur


Télécharger ppt "Zlab.fr:~/jdll zifro$ rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments."

Présentations similaires


Annonces Google