2008-12-22 7 views
2

Je suis maintenant responsable d'une application Rails qui a été construite d'une manière très rapide et sale. Il a beaucoup de fichiers de vue (modèles html) qui ne sont pas utilisés. Il a également de nombreux fichiers CSS qui ne sont pas utilisés. Quelle est la meilleure façon de déterminer quels fichiers ne sont plus nécessaires pour pouvoir les supprimer?Quelle est la meilleure façon de déterminer quels fichiers sources ne sont plus nécessaires?

Je suis à la recherche d'une solution générique et non d'une solution spécifique à Rails, mais une solution Ruby/Rails seule sera certainement la bienvenue.

Juste pour faire avancer les choses ont commencé, une idée que j'avais (que je ne suis pas particulièrement friands) pour déterminer les points de vue ont été utilisés est la suivante:

  1. Ecrire un script qui permet d'insérer une ligne de code dans le haut de chaque fichier de vue. La ligne de code ajoutera le nom de la vue à une sorte de journal.
  2. wget récursive l'ensemble du site
  3. Aller dans le journal et supprimer les doublons - nous avons une liste de points de vue qui sont utilisées
  4. Supprimer des vues qui ne figurent pas dans le journal

Répondre

4

Si vous êtes sur un système de type unix:

Assurez-vous que la partition avec les pages est montée avec le temps d'accès (atime) activé. Sur Linux, les montages avec relatime ou noatime ne vous aideront pas.)

Choisissez l'heure actuelle.

Exécutez le serveur Web pendant quelques jours.

Identifie les fichiers dont l'heure est antérieure à l'heure précédemment sélectionnée. Ils ne sont pas utilisés.

+0

Je suis sur un Unix (Ubuntu), et cela semble être une approche raisonnable. Merci Juan. J'ai laissé la question ouverte un peu plus longtemps avant de l'essayer. – Joel

+0

soyez prudent avec ceci. certains fichiers ne peuvent pas être touchés en fonction du chemin d'exécution. J'ai travaillé sur des projets hérités (pas liés au web) où certaines routines n'avaient jamais été invoquées depuis des années - et quand elles l'étaient, elles se sont écrasées parce qu'elles n'avaient jamais été testées et en fait n'étaient pas terminées! – frankodwyer

2

Vous pouvez utiliser les journaux du serveur Web pour énumérer toutes les ressources côté client qui sont servies à votre script. Selon le système d'exploitation, il est également possible de surveiller (avec un filtre) les fichiers chargés lors de l'exercice des pages. Sur Windows, il y a FileMon, pour BSD/OSX il y a fs_usage, et Linux a dnotify et inotify. Commencer par écrire des tests, une fois que vous en avez, vous pouvez soit supprimer un fichier à la fois et annuler si les tests échouent ou utiliser rcov pour voir ce qui est utilisé.

4

Comme pour tout refactoring, commencez par écrire des tests.

4

Krusty.ar a raison et la meilleure approche.

Personnellement, je voudrais écrire quelques tests d'intégration qui vérifient toutes les fonctionnalités à un niveau élevé. Ensuite, utilisez avec rcov et vous obtiendrez une sortie très lisible qui vous dira quels fichiers ont 0% d'utilisation.

Ensuite, vous pouvez commencer à supprimer ou commencer à écrire des tests unitaires/fonctionnels pour plus de sécurité.

0

Votre meilleur pari est de devenir si fluide lors des tests que vous pouvez compter à 100% sur vos propres tests. En d'autres termes, si vous pouvez supprimer un fichier, et que les tests sont toujours en cours, vous devriez pouvoir supposer que ce fichier n'est nécessaire à rien, car vous devriez avoir des tests pour tout dans votre application.

Questions connexes