Comment reprendre un (gros) projet Ruby on Rails

1,221 views

Published on

Comment reprendre un (gros) projet Ruby on Rails

Conférence donnée le 6 février 2012 durant le meetup #parisrb

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,221
On SlideShare
0
From Embeds
0
Number of Embeds
134
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Comment reprendre un (gros) projet Ruby on Rails

    1. 1. #parisrb
    2. 2. Comment reprendre un (gros) projet Ruby on RailsYann Klis, Novelys#parisrb, 06/02/2012, @lacantine
    3. 3. • Yann Klis• Fondateur de Novelys (Strasbourg)• Forte expertise sur la technologie Ruby/Rails• Depuis septembre 2005• Fournit des startups, des collectivités, des PME• Ruby/Rails/AWS/MySQL/Sphinx/MongoDB
    4. 4. Analyse audit du code source (NDA) pourquoi ? schéma de la bdd ? dump de la bdd ? suite de tests ? documentation ? version de rails ? version des gems ? hébergement ? accès à la plateforme de prod ? rake statsÉvidemment, c’est la version de l’histoire du côté du client …
    5. 5. Hypothèsesde départ Pas vraiment accès à lancienne équipe Client dans de mauvaises dispositions Version ancienne de Rails Pas vraiment de tests Pas vraiment de doc Budget serré ...
    6. 6. Aspects psychologiqueset méthodologie ”Ajouter une fonctionnalité prend beaucoup de temps” ”Lenteur” ”Beaucoup de bugs” ↓ Repartir dune base saine et moderne Ne plus rajouter de nouvelles features pendant 1 à 2 mois ↓ Rajout de fonctionnalités devient moins coûteuxLe vrai boulot va être de regagner la confiance du client
    7. 7. Gestion de dépendancesavec bundler écrire un fichier Gemfile cf http://gembundler.com/rails23.html pour la mise en place ls -l vendor/plugins cat config/environment.rb Attention si modifs directement dans vendor/plugins !
    8. 8. Changer de plugins/gemsl’écosystème de gems évolue lui aussi file_column → acts_as_attachment → paperclip (carrierwave) acts_as_authenticated → authlogic → devise acts_as_taggable → acts_as_taggable_on → acts_as_taggable_on_steroids acts_as_tree → awesome_nested_set (nested_set) Ajustements nécessaires dans la base de données, voir point suivant
    9. 9. Mettre à jour Railsuse your version control system git co -b upgrade_rails && rm -rf * && rails new . rjs / rhtml routes.rb named_scope / scope syntaxe ActiveRecord Mettre à jour Rails au moins en 2.3.11 ruby script/plugin install git://github.com/rails/rails_upgrade.git
    10. 10. Stratégierécupération «par appartement» rm -rf * ↓ git diff/checkout pour chaque modèle/répertoire Sans doute que la couche d’authentification sera la première à devoir être migrée
    11. 11. Mauvaise/nouvelle architecturede la base de données erreur mineure? → migration erreur majeure? → ETL (Extract Transform Load)
    12. 12. ETLavec rake customers customers - name - name -… -… - address_country_1 rake db:backup - address_country_2 - address_country_3 addresses - customer_id etl:extract:all - country db:drop db:create db:migrate etl:load:all customers.csv addresses.csv https://gist.github.com/1746376
    13. 13. Reprise fullstackbase de données, serveur web, etc Mise en place capistrano Mise en place chaîne de production (staging, production) Mise en place nouvel hébergement
    14. 14. Questionsqui restent en suspens Faut-il mettre à jour Rails ? Faut-il mettre à jour Ruby ? Faut-il introduire des tests ? Faut-il mettre à jour le code front-end ? Rails au moins en 2.3.11 pour préparer migration 3.x Mise à jour ruby 1.9.x == galère avec encoding
    15. 15. Questions ?http://twitter.com/yannski http://blog.strasslab.net yann.klis@novelys.com

    ×