Je comprends le désir de faire passer les gens à l’argument include_condition dans une utilisation standard de la méthode add_to_serializer, c’est-à-dire pour ajouter leurs propres méthodes aux sérialiseurs.
Cependant, il existe des cas où un plugin peut vouloir ajouter une méthode include_* à un sérialiseur qui ne correspond pas à ce cas, c’est-à-dire lorsque vous ne déterminez pas si votre propre attribut personnalisé est inclus, mais que vous remplacez une méthode include_* dans un sérialiseur principal, par exemple
J’apprécie que cette utilisation particulière puisse être repensée pour ne pas nécessiter de remplacement de la méthode de sérialisation du site, ou que le remplacement puisse être réalisé par d’autres moyens, mais je me demande s’il y a un inconvénient inhérent à permettre une telle utilisation de la méthode add_to_serializer de cette manière, et si la dépréciation entraînera une suppression de l’utilisation de la méthode de cette manière.
Nous avons récemment introduit un nouveau système pour les ‘modificateurs de plugin’, qui sont des points d’extension très peu coûteux et similaires à DiscourseEvent mais ils prennent une valeur d’entrée et retournent une valeur. Donc, dans votre cas, vous pourriez faire une PR principale pour ajouter un appel DiscoursePluginRegistry.apply_modifier dans la méthode include_ pertinente, puis vous pouvez utiliser register_modifier dans votre plugin pour remplacer la valeur.
Il est probable que nous la bloquions complètement à terme, oui. De plus, vous ne voudriez vraiment pas utiliser une méthode qui génère du bruit de dépréciation dans les journaux.
Si vous devez absolument remplacer une méthode sans la coopération du cœur, alors modify_class semblerait être le meilleur choix. La principale raison pour laquelle nous avons un add_to_serializer dédié est qu’il définit automatiquement une méthode include_* afin qu’elle ne s’applique que lorsque le plugin est activé.
Cela signifie que l’extrait de code que vous avez lié définit actuellement deux méthodes. include_wizard_required? et include_include_wizard_required?
Ce Readme indique qu’il « fonctionne comme une pile (premier entré, premier sorti) », mais c’est une file d’attente. Une pile est premier entré, dernier sorti. (Je n’arrive même pas à copier le texte sur mon téléphone).
C’est plutôt une « pile middleware » : une série de méthodes qui sont exécutées dans l’ordre, chacune passant son résultat à l’entrée de la méthode suivante.
Je ne pense pas qu’essayer d’appliquer la terminologie LIFO/FIFO ici fonctionnera : rien n’est ajouté/retiré de la « pile » - il n’y a pas de « sortie ».
J’ai commencé à dire quelque chose sur la façon dont j’ai obtenu mon diplôme en informatique en 1987 et que je ne savais pas ce que les gens apprenaient maintenant.
C’est un peu mon problème. J’ai eu un écart de près de 10 ans récemment où je ne me suis presque pas approché d’un ordinateur (après plus de 25 ans à travailler avec eux) et j’ai l’impression qu’il me manque une énorme base de connaissances.