Monkey-Patch
Un article de Wikipédia, l'encyclopédie libre.
![]() |
Cet article est une ébauche à compléter concernant l'informatique, vous pouvez partager vos connaissances en le modifiant. |
Une Monkey-Patch (aussi nommé Monkey Patch, MonkeyPatch) traduit par modification-singe est une façon de modifier ou d'étendre du code qui sera exécuté sans modifier le code source original pour des langages de programmations dynamiques. Il s'applique aussi dans la modification des logiciels d'un système alors qu'il utilise un système de gestion de paquets.
La notion se nomme aussi :
- Guerilla patch
- Extension des classes précédemment déclarer
- Réouverture des classes
- Hijacking
Sommaire |
[modifier] Étymologie
Le terme Monkey-Patch a été utilisé premièrement sous l'appellation Guerilla Patch, qui fait référence à une modification furtive et sans aucune règle du code au moment de son exécution. Dans certaines applications (comme Zope 2) ces patches interagissent les une avec les autres ce qui a pour conséquence de créé une bataille pour déterminer laquelle modifiera le code.
Du au fait que les mots guerilla et gorilla sonne de la même façon, les gens ont commencés à utiliser le terme incorrecte Gorilla Patch au lieu de Guerilla Patch. Quand un développeur de logiciel crée une Guerilla Patch, il essai avec grande difficulté d'éliminer la bataille entre les patches et donc le terme Monkey-Patch fût donc la désignation pour cette sorte de modification de code.
Le terme Monkey-Patch est utilisé depuis.
[modifier] Applications
La modification-singe est utilisée pour :
- Replacer des méthodes/attributs/fonctions au moment de l'exécution ;
- Modifier/étendre le comportement ou l'apparence d'un produit d'une tierce personne sans maintenir sa propre copie du code source ;
- Appliquer une patch au moment de l'exécution à un objet en mémoire sans l'appliquer dans le code source sur le disque ;
- Correction d'un comportement ou d'un trou de sécurité qui réside dans le code source originale (un exemple est dans la façon de distribué une correction en tant que ajout dans la plate forme Ruby on Rails).
[modifier] Pièges
L'utilisation de la modification-singe comporte les problèmes suivant :
- Si le produit ou le paquet modifier change avec la nouvelle version elle va très certainement détruire votre patch ;
- Si deux modules essai de faire une modification-singe sur la même méthode, seul la dernière va "gagner" la bataille et l'autre n'aura aucun effet ;
- Si la modification-singe crée une différence entre le code source originale et sur celui qui s'exécute, la résolution de confit et de bug devient très difficile, spécialement si vous n'êtes pas l'auteur de la patch ;
- L'utilisation de la modification-singe peut conduire à des problèmes de mise-à-jours car les modifications faite sur le code prétende des affirmations qui au fils des modifications ne sont plus vrai.