Capítulo 11. Lidar com dependências e problemas de compatibilidade

Compatibilidade com a versão do RKWard

Fazemos o possível para garantir que os plugins desenvolvidos para uma versão antiga do RKWard continuem funcionando em versões posteriores do RKWard. No entanto, o inverso nem sempre é verdadeiro, pois novos recursos são adicionados. Como nem todos os usuários estão executando a versão mais recente do RKWard, isso significa que seu plugin pode não funcionar para todos.

Quando você estiver ciente de tais problemas de compatibilidade, certifique-se de documentar esse fato em seu arquivo .pluginmap, usando o elemento <dependencies>. O elemento <dependencies> pode ser especificado como um filho direto do elemento <document> do .pluginmap, ou como um elemento filho de definições individuais de <component>. No primeiro caso, as dependências se aplicam a todos plugins no mapa. No segundo caso, apenas ao(s) <component>(s) individual(is). Você também pode misturar dependências "globais" e "específicas". Nesse caso, as dependências "globais" são adicionadas às do componente individual.

Vejamos um pequeno exemplo:

<document ...>
        <dependencies rkward_min_version="0.5.0c" />
        <components ...>
                <component id="myplugin" file="reduced_version_of_myplugin.xml" ...>
                        <dependencies rkward_max_version="0.6.0z" />
                </component>
                <component id="myplugin" file="fancy_version_of_myplugin.xml" ...>
                        <dependencies rkward_min_version="0.6.1" />
                </component>
                ...
x        </components ...>
</document>
        

Neste exemplo, sabe-se que todos os plugins requerem pelo menos a versão 0.5.0c do RKWard. Um plugin, com id="myplugin" é fornecido em duas variantes alternativas. A primeira versão, simplificada, será usada para versões do RKWard anteriores à 0.6.1. A segunda utiliza recursos que são novos no RKWard 0.6.1, e será usada somente a partir do RKWard 0.6.1 em diante.

Fornecer variantes alternativas como esta é uma maneira muito amigável de usar novos recursos, mantendo o suporte para versões anteriores do RKWard. As versões alternativas devem compartilhar o mesmo id (caso contrário, serão exibidos avisos) e só podem ser definidas dentro do mesmo arquivo .pluginmap.

Plugins que não são compatíveis com a versão em execução do RKWard, e que não vêm com uma versão alternativa serão ignorados com um aviso.

Nota

Na verdade, a versão 0.6.1 do RKWard é a primeira a interpretar dependências e a reportar erros de dependência. Portanto, ao contrário do que o exemplo possa sugerir, especificar versões anteriores nas dependências não terá efeito direto (mas ainda pode ser uma boa ideia para fins de documentação).

Às vezes será possível até mesmo lidar com problemas de incompatibilidade de versão dentro de um único arquivo .pluginmap usando o elemento <dependency_check>, descrito na seção seguinte.