[Paris on Rails 2006] shopping.nouvelobs.com : notes

Paris on Rails, vendredi 17 novembre 2006.

2e présentation.

10h34

[Slides dispo déjà depuis samedi : http://pierlis.com ]

== shopping.nouvelobs.com Enseignements d’une prestation
en Rails - Pierre-Loïc Raynaud (Pierlis)

(enrhumé)
Réalisation d’un site de commerce en ligne :
shopping.nouvelobs.com

SSII de 5 personnes spécialisé dans les langages exotiques :
Ruby serveur et Objective C/Cocoa côté client.

  • Site NouvelObs
    on connaissait à peine le langage quand on l’a vendu
    • activité offline puis online
    • refonte du site
      • charte graphique fournie par le client
      • aspect conseil pour la gestion du site et les outils
        de backoffice

catalogue du NouvelObs : spécial…entre l’Homme Moderne et
l’indéfinissable (!)
Entre 100 000 et 200 000 commandes par an.

prestataire ?
Problème : exemple les photos des produits étaient en GIF.

Comment vendre du Rails ?
on ne l’a pas dit au client ! (rires)
Rails c’est du PHP ? Euh ouais, c’est Open Source, ya du MySQL
dedans…

ils (nos clients) sont venus aujourd’hui (?).

Pour un site Web, on n’est pas obligés de mettre de l’Ajax,
de l’autocomplete ni du drag/drop

Pourquoi cet exemple ?
besoin représentatif
premier projet réalisation commerciale

  • couverture fonctionnelle large
    • front
    • back
    • intégration gros système
    • intégration paiement en ligne

4 mois de recul ! (mis en production en juillet)
(je voudrais qu’on se mettre d’accord sur le prix de la journée
de prestation)

gros systèmes se brancher la dessus

  • Pourquoi Rails ?
    • beauté et puissance de Ruby
    • qualité du framework
    • client technologiquement agnostique
    • ennuyé par PHP, fatigué de Java
    • accès au code source
    • volonté de constituer une première référence
    • test en vrai grandeur, dans une prestation au forfait

comparaison Ruby/Java, très intéressante à lire
lien : IBM Developer

Hebdogiciel/Basic (NdU : comprends pas pourquoi j’ai écrit ça, il a
dû dire qu’il a appris à programmer en lisant Hebdogiciel ?)

vous êtes un peu “edgy” (NdU: early adopters ?)

RETOURS D’EXPÉRIENCE

  • Graphique (même que celui de Railsconf Europe, voir les slides)
    productivité avec un langage connu et maîtrisé

4/5e du temps : on n’a pas fait la moitié de ce qu’il fallait
on nous avait dit que c’est rapide, peu de LOC

vous êtes à l’aise : Principe de Moindre Surprise travail d’accoutumance

  • 2e graphique
    zone d’anxiété / travail effectué
    “Et si on mettait une équipe PHP en parallèle ?”

  • Effet Ruby + Rails
    zone d’anxieté → zone de confort
    vous avez fini avant : vous ne le dites pas au client ! (rires)

expérience qu’a a eu nous

  • Vitesse de dév
    temps de dev Rails versus PHP
  • 2 ingénieurs expérimentés : C++, Java, PHP, Objective C + frameworks
  • Ruby et Rails demande une bonne connnaissance de la Programmation
    Orientée
    Objet + expérience avec framework
    pour en tirer tout le profit
  • dans ces conditions , nous sommes allés plus vite à périmètre
    fonctionnel égal
  • Structuration des projets
  • apport de Rails dans la phase de dev
    • structuration du projet
      • méthodologie
      • respect du MVC
      • travail en équipe
      • reprise du code facilitée
    • scaffolding

génération de code : au début ça fait peur.

principe Rails : convention over configuration
avantage : en équipe, plus simple de naviguer
reprise de code : chacun n’a pas mis au point sa propre
structuration de code
dégagement de prestataire → on fait des changements dans l’organisation
des fichiers pour éviter ça (rires)
site Rails : vidéo → blog
scaffold : sert pas à grand chose

  • Apports de Rails pour le développement

MVC

M : ActiveRecord : ORM, relations, validations
→ attaquer des tables avec une sémantique objet
V : ActionView : rhtml, rxml, ajax, helper , partials
→ associé au Web2.0 (pas compris ce qu’était le Web2.0) +
lib JS bien intégré au framework (presque un plaisir (mais c’est
quand même du JS))
C : ActionController : routage, clean url tout ce qui est ni modèle,
ni view, gestion d’url

  • dév peut passer plus de temps sur le code orienté client, car
    on a moins de code “orienté support” à écrire
  • Autres apports de Rails

    • grâce à des outils couvrant presque tout le cycle de vie d’une
      application
    • développement ruby, rails, irb
    • déploiement : rake capistrano
    • test : rake test
    • débugging : console, breakpointer (point d’arret)
    • documentation : rdoc
      évolution du modele de données : rake migrate (chacun sait le faire
      mais
      chacun le fait à sa façon)
    • réutilisation & partage de code : plugins
  • Sur la maintenance

Exemple, le client veut rajouter un système de promotions :

script/generate migration AjouterPrixPromotionnel

Migration

class AjouterPrixPromotionnel < AR::M
def self.up
add_column ‘produits’, ‘prix_promo’, :float
Product.find(:all, :conditions => [ ‘Prix > 100’ ]).each { |prod|
prod.prix_promo = prod.prix * 0.9
prod.save
}
end

def self.down
remove_column ‘produits’, ‘prix_promo’
end
end

  • Débugging

    • irb vs console
    • breakpointer
      • placer des points d’arrêt
        examiner variables, stack trace
      • appli non triviales : prend tout sens
  • Déploiement

    • schemas de déploiement
  • Sur le déploiement

    • outils standards pour faciliter les phases d’un déploiement
      (Capistrano)
    • faire évoluer un modèle de données
    • livraison des nouvelles version de l’appli
    • relancer le service sur l’appli mise à jour
    • possibilité de revenir en arrière
    • en config multi-host
    • permet de normer les procédures
      → agilité
      pour les hébergeurs aussi
  • Réutilisation

  • bon framework enrichi par ses utilisateurs
    pour ses besoins propres
    pour tout le monde

  • Enrichissement Pierlis
    ModelSearch (NdU: PLR est passé sur ce sujet mais il a plus détaillé Ã
    RailsConf Europe, voir les slides de la conf sur pierlis.com .)
    Memoize
    additions sur les classes standard

  • Problèmes :
  • peu de compétences disponible ?
  • où sont les hébergeurs spécialisés ?
  • gourmand en hardware ?
    ça “rame” un peu
    il faut bien optimiser votre code, machine un peu plus
    puissante que l’équivalent d’une appli dans un autre langage
  • documentation immature?
    doc de plus en plus

(ya Telecom Italia)
partenariat avec PlanetService

travailler avec les bons hébergeurs (“Rails, ça fait pas partie
de votre appli ?”)

  • A qui profite Ruby on Rails
  • moins de j.h mais j.h plus coûteux : pas vraiment
    d’avantage côté prix
  • notre parti pris
    • livrer des applis plus polies
    • factoriser du code entre les applis que nous livrons
    • interopération des specs à la recherche d’une
      meilleure satisfaction clients

plus le code est testé, moins il est buggé, plus les
clients en profite
avantage client et prestataire

  • Exemples
  • interprétation des spec
  • gestion du merchandising
    comment ranger les rayons
    rayons (n) ↔ produits (n)

(on voit une interface)
2 dropdowns en form
pas spécifiques à Rails - drag n drop

exemple : recadrage d’une photo (fontaine au chocolat (??))
→ croping, magie, CSS JavaScript, RMagick

  • Conclusion

profitez de la jeunesse de Rails
Soyez curieux
risque ~ opportunité
si le développeur meurt ?

  • qualité s’apprécie dans le temps

grande vague de fraîcheur pour les dév
(on fait de la formation)
qualité du code produit
nouvelles fonctionnalité => maintenabilité

@ror_users += ParisOnRails.participants

  • Questions : il n’y en avait pas, si je me souviens bien
    le journaliste qui surveillait le bon déroulement de la conf
    a proposé de renvoyer les questions à la séance de
    questions-réponses à la fin de la journée.

    РJean-Fran̤ois.

On 11/20/06, Jean-François [email protected] wrote:

Paris on Rails, vendredi 17 novembre 2006.

2e présentation.

Merci Jean François.

JF tu as pris toutes ses notes en live?
C’est moi qui suit “à la renverse” :slight_smile:
Seb

Je le voyais écrire comme un fou pendant les conférences (j’étais deux
rangs plus haut), je comprends pourquoi maintenant…