Comment reprendre un (gros) projet Ruby on Rails

  • 1,054 views
Uploaded on

Comment reprendre un (gros) projet Ruby on Rails …

Comment reprendre un (gros) projet Ruby on Rails

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,054
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
0
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. #parisrb
  • 2. Comment reprendre un (gros) projet Ruby on RailsYann Klis, Novelys#parisrb, 06/02/2012, @lacantine
  • 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. 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. 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. 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. 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. 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. 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. 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. Mauvaise/nouvelle architecturede la base de données erreur mineure? → migration erreur majeure? → ETL (Extract Transform Load)
  • 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. 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. 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. Questions ?http://twitter.com/yannski http://blog.strasslab.net yann.klis@novelys.com