Kapitel 11. Hantera beroenden och kompatibilitetsfrågor

RKWard versionskompatibilitet

Vi gör vårt bästa för att se till att insticksprogram utvecklade för en gammal version av RKWard fortsätter fungera i senare versioner av RKWard. Dock är det omvända inte alltid sant, eftersom nya funktioner läggs till. Eftersom inte alla användare kör senaste versionen av RKWard, kan det betyda att ditt insticksprogram inte fungerar för alla.

När du är medveten om sådana kompatibilitetsproblem, bör du se till att detta faktum dokumenteras i din .pluginmap-fil, genom att använda <dependencies>. Elementet <dependencies> kan antingen specificeras som ett direkt underliggande objekt till elementet <document> i en .pluginmap, eller som underliggande objekt till individuella <component>-definitioner. I det första fallet, gäller beroendena alla insticksprogram i avbildningen. I det senare fallet bara de individuella komponenterna, <component>. Det går också att blanda toppnivå "globala" och "specifika" beroenden. I det fallet läggs de "globala" beroendena till de för individuella komponenter.

Låt oss titta på ett litet exempel:

<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>
        

I det här exemplet är det känt att alla insticksprogram kräver minst version 0.5.0c av RKWard. Ett insticksprogram, med id="myplugin" tillhandahålls i två olika varianter. Den första, förenklade, versionen används för RKWard versioner innan 0.6.1. Den senare utnyttjar funktioner som är nya i RKWard 0.6.1 och används bara i RKWard 0.6.1 och framåt.

Att tillhandahålla alternativa varianter på detta sätt är ett mycket användarvänligt sätt att utnyttja nya funktioner, och fortfarande behålla stöd för tidigare versioner av RKWard. Alternativa versioner ska dela samma id (annars produceras varningar), och kan bara definieras inne i samma .pluginmap-fil.

Insticksprogram som inte är kompatibla med versionen av RKWard som kör, och som inte levereras med en alternativversion, ignoreras med en varning.

Notera

I själva verket är RKWard 0.6.1 den första versionen som tolkar beroenden, och rapporterar beroendefel, överhuvudtaget. Sålunda, i motsats till vad exemplet förespeglar, blir det ingen direkt effekt av att specificera några tidigare versioner i beroenden (men kan ändå vara en god idé i dokumentationssyfte).

Ibland kan det till och med vara möjligt att hantera inkompatibilitetsproblem mellan versioner inne i en enda .pluginmap-fil, genom att använda elementet <dependency_check>, som beskrivs i nästa avsnitt.