Entendo o desejo de mover os usuários para o argumento include_condition em um uso padrão do método add_to_serializer, ou seja, para adicionar seus próprios métodos aos serializadores.
No entanto, há algumas instâncias em que um plugin pode querer adicionar um método include_* a um serializador que não corresponda a esse caso, ou seja, quando você não está determinando se seu próprio atributo personalizado está incluído, mas está substituindo um método include_* em um serializador principal, por exemplo:
Aprecio que esse uso em particular possa ser repensado para não exigir a substituição do método do serializador principal, ou que a substituição possa ser alcançada de outras maneiras, mas estou me perguntando se há alguma desvantagem inerente em permitir tal uso do método add_to_serializer dessa forma, e se a descontinuação levará à remoção do uso do método dessa maneira.
Recentemente, introduzimos um novo sistema para ‘modificadores de plugin’, que são pontos de extensão super baratos e semelhantes ao DiscourseEvent, mas eles recebem um valor de entrada e retornam um valor. Portanto, no seu caso, você poderia fazer um PR principal para adicionar uma chamada DiscoursePluginRegistry.apply_modifier no método include_ relevante e, em seguida, usar register_modifier no seu plugin para substituir o valor.
É provável que eventualmente o bloqueemos completamente, sim. Além disso, você realmente não vai querer usar um método que está gerando ruído de depreciação nos logs.
Se você realmente precisar substituir um método sem a cooperação do core, então modify_class pareceria a melhor escolha. A principal razão pela qual temos um add_to_serializer dedicado é porque ele define automaticamente um método include_*, para que ele só se aplique quando o plugin estiver habilitado.
Isso significa que o trecho de código que você vinculou está atualmente definindo dois métodos. include_wizard_required? e include_include_wizard_required?
Esse Readme diz que ele “opera como uma pilha (primeiro a entrar, primeiro a sair)”, mas isso é uma fila. Uma pilha é primeiro a entrar, último a sair. (Não consigo descobrir nem como copiar o texto no meu celular).
É mais como uma ‘pilha de middleware’: uma série de métodos que são executados em ordem, cada um passando seu resultado para a entrada do próximo método.
Não acho que tentar aplicar a terminologia LIFO/FIFO aqui funcione: nada está sendo adicionado/removido da ‘pilha’ - não há ‘saída’.
este é meio que o meu problema. tenho uma lacuna recente de quase 10 anos em que mal cheguei perto de um computador (depois de mais de 25 anos trabalhando com eles) e parece uma seção de base de conhecimento enorme que está faltando.