Розділ 11. Проблеми залежностей і сумісності

Сумісність із версіями RKWard

Ми намагаємося робити так, щоб додатки, які було створено для старих версій RKWard, могли працювати і у новіших версіях RKWard. Втім, зі зворотною сумісністю все не так добре, адже у програмі весь час з’являються нові можливості. Оскільки не усі користувачі працюють із найсвіжішою версією RKWard, ваш додаток може виявитися непрацездатним у деяких системах.

Якщо вам відомі такі проблеми сумісності, вам слід документувати їх у вашому файлі .pluginmap за допомогою елемента <dependencies>. Елемент <dependencies> можна вказати або як безпосередній дочірній елемент елемента .pluginmap <document>, або як дочірній елемент окремих визначень <component>. У першому випадку залежності буде застосовано до усіх додатків з карти. У другому випадку — лише до окремого <component>. Ви також можете визначити суміш верхніх «загальних» і «специфічних» залежностей. У цьому випадку загальні залежності буде додано до залежностей індивідуальних компонентів.

Розгляньмо невеличкий приклад:

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

У цьому прикладі від усіх додатків вимагається, щоб було встановлено принаймні версію 0.5.0c RKWard. Один з додатків, з id="myplugin", постачається у двох альтернативних варіантах. Перший, спрощений, може бути використано для версій RKWard, які передували версії 0.6.1. Інший же використовує можливості, які з’явилися у RKWard, починаючи з версії 0.6.1, отже ним можна буде скористатися лише у RKWard 0.6.1 та наступних версіях.

Надання таких альтернативних варіантів, як у наведеному прикладі, є дружнім до користувача способом скористатися новими можливостями, зберігши можливість користування у попередніх версіях RKWard. У альтернативних версій має бути однакове значення id (якщо вказати різні, програма показуватиме попередження). Крім того, їх можна визначити лише у межах одного файла .pluginmap.

Додаток, який є несумісним із запущеною версією RKWard і який не має альтернативних версій, буде проігноровано із виведенням відповідного попередження.

Примітка

Насправді, RKWard 0.6.1 був першою версією, у якій можна було слідкувати за залежностями і повідомляти про проблеми із залежностями взагалі. Отже, на відміну від того, про що можна було б припустити з нашого прикладу, визначення будь-яких версій до 0.6.1 у описі залежностей не матиме ніякого безпосереднього впливу на працездатність додатка (втім, може бути корисним з міркувань документування).

Іноді навіть можна обробляти проблеми з несумісністю версій всередині єдиного файла .pluginmap за допомогою елемента <dependency_check>, описаного у наступному розділі.