Пераход з 1.x на 2.x
Выканайце гэтыя крокі пры пераходзе існуючай праграмы з Laravel Feeds 1.x на 2.x. Калі ўсталяваная версія 1.x ужо мае slug стужак або абноўленыя назвы новых рэгістрацый, захавайце гэтыя змены і прапусціце выкананыя крокі.
Патрабаванні да асяроддзя
| Кампанент | 1.x | 2.x |
|---|---|---|
| PHP | ^8.2 | ^8.4 |
| Кампаненты Laravel | ^11.0 || ^12.0 || ^13.0 | ^13.0 |
Перад усталяваннем 2.x абнавіце залежнасці Laravel праграмы і версіі PHP для вэб-праграмы, CLI, планавальніка і воркераў чаргі. Праграмы на PHP 8.2 або 8.3, ці Laravel 11.x або 12.x, павінны заставацца на 1.x. Падтрыманае асяроддзе апісана на старонцы сумяшчальнасці.
Перад абнаўленнем
- Захавайце бягучы код праграмы,
composer.json,composer.lockі апублікаваныconfig/feeds.php. Зрабіце рэзервовую копію табліцы рэгістрацый стужак і выходных файлаў, патрэбных для адкату. - Запішыце ідэнтыфікатары рэгістрацый, назвы, існуючыя slug, расклады і месцы выходных файлаў.
- Знайдзіце выклікі
feed:generateу скрыптах разгортвання, заданнях cron, ручных раскладах, тэстах і кодзе праграмы. - Згенеруйце тыповыя стужкі і захавайце іх для параўнання.
- Падчас разгортвання прыпыніце расклады стужак і завяршыце заданні, якія выконваюцца або чакаюць у чарзе, перад заменай пакета і зменай схемы.
Прымяненне абнаўлення
composer require dragon-code/laravel-feeds:^2.0 --with-all-dependencies
composer check-platform-reqs
Параўнайце config/feeds.php усталяванага пакета з апублікаванай копіяй праграмы і захавайце налады праграмы. Не публікуйце паўторна з --force: гэта перазапісвае копію.
Даданне slug стужак
PR #287 змяняе выбар адной стужкі: замест ідэнтыфікатара базы даных выкарыстоўваецца slug, атрыманы праз Str::slug(title).
Калі міграцыя slug пакета яшчэ не выканана, апублікуйце міграцыі:
php artisan vendor:publish --tag=feeds-migrations
Каманда публікуе ўсе файлы міграцый. Праверце апублікаваныя файлы і выдаліце непатрэбныя.
Задайце дату і час у імені файла новай міграцыі add_slug_to_feeds_table так, каб яна ішла пасля фактычнай міграцыі create_feeds_table праграмы і перад усімі міграцыямі рэгістрацыі стужак. Такі парадак гарантуе, што migrate:fresh дадасць слупок slug да запісу рэгістрацый. Затым выканайце міграцыі:
php artisan migrate
Міграцыя дадае слупок slug, які дазваляе NULL, і запаўняе яго з існуючых назваў, уключаючы мякка выдаленыя запісы. Існуючыя назвы і ідэнтыфікатары захоўваюцца.
Калі праграма ўжо мае ўласны слупок slug, а міграцыя пакета яшчэ не выканана, міграцыя завершыцца памылкай перад запаўненнем даных. Вырашыце канфлікт схемы да разгортвання; не выдаляйце слупок праграмы без захавання яго даных і абнаўлення кода, які яго выкарыстоўвае.
Праглядзіце захаваныя значэнні ў php artisan tinker:
app(\DragonCode\LaravelFeed\Queries\FeedQuery::class)
->all()
->get(['id', 'title', 'slug']);
Slug для выбару стужак павінны быць непустымі і адрознівацца сярод усіх нявыдаленых рэгістрацый, уключаючы неактыўныя. Розныя назвы могуць пераўтварыцца ў аднолькавы slug. Неадназначны пошук выклікае MultipleRecordsFoundException; невядомы slug — FeedNotFoundException. Выпраўце калізіі або пустыя slug, абнавіўшы назвы праз мадэль стужкі.
У 2.3.0 PR #334 замяняе перавызначэнне fireModelEvent() на FeedObserver::saving(). Раней slug вылічваўся з сырых атрыбутаў пасля saving, creating і updating, уключаючы ціхае захаванне. Цяпер выкарыстоўваецца назва з улікам accessor у момант выканання saving-observer; ціхае захаванне прапускае яго, а познія апрацоўшчыкі не запускаюць паўторны пералік.
PR #335 дадае праверку $feed->isDirty('slug'): яўна зменены slug нармалізуецца праз Str::slug() і захоўваецца пры бягучым захаванні, нават калі адначасова змяняецца title. FeedQuery::create() прымае яго праз extra: ['slug' => 'Custom Catalog']. Нязменены slug па-ранейшаму вылічваецца з title, таму наступнае звычайнае захаванне можа замяніць раней зададзены карыстальніцкі slug. Прысваенне значэння, якое нармалізуецца ў бягучы slug, не прадухіляе пералік.
Пры абнаўленні з ранейшай версіі 1.x або 2.x праверце яўныя прысваенні slug, ціхія захаванні, accessors назвы, апрацоўшчыкі падзей, частковыя выбаркі, карыстальніцкія casts і масавыя запісы. Пратэстуйце захаваныя title і slug, наступнае звычайнае захаванне, пошук паводле slug і генерацыю паводле раскладу. Усталяванне абнаўлення само не змяняе радкі, але наступнае звычайнае захаванне можа змяніць карыстальніцкі slug або slug з accessor нават без змены назвы. Пры патрэбе абнавіце slug у камандах і раскладах. Прыклады яўнага задання slug, ціхага захавання і працы з апрацоўшчыкамі ёсць у Eloquent.
Замена ID ў выкліках генерацыі
Для рэгістрацыі з ID 42 і захаванай назвай Products slug пасля міграцыі будзе products.
Да:
php artisan feed:generate 42
Пасля:
php artisan feed:generate products
У 2.x аргумент заўсёды азначае slug; лікавы радок больш не выбірае запіс па ID базы даных. Выклік php artisan feed:generate без аргумента па-ранейшаму апрацоўвае ўсе актыўныя рэгістрацыі. Пры выкарыстанні --target замяніце толькі аргумент рэгістрацыі; ключы мэтаў застаюцца ранейшымі:
php artisan feed:generate products --target=42
Таксама абнавіце ручныя расклады і праграмныя выклікі каманды. Да:
use DragonCode\LaravelFeed\Commands\FeedGenerateCommand;
use Illuminate\Support\Facades\Schedule;
Schedule::command(FeedGenerateCommand::class, [42])->daily();
Пасля:
use DragonCode\LaravelFeed\Commands\FeedGenerateCommand;
use Illuminate\Support\Facades\Schedule;
Schedule::command(FeedGenerateCommand::class, ['products'])->daily();
Захавайце налады абароны ад адначасовага запуску, фонавага выканання і частаты ручнога раскладу. Пры перайменаванні рэгістрацый абнаўляйце slug, пазначаныя ў кодзе. ScheduleFeedHelper::register() аўтаматычна выкарыстоўвае захаваныя slug і захоўвае прывязку блакіровак да рэгістрацыі пры змене яе назвы або выразу cron.
FeedQuery::find(int $id), delete(int $id) і restore(int $id) па-ранейшаму выкарыстоўваюць ID. Для выбару па slug выкарыстоўвайце FeedQuery::findBySlug(string $slug). Гл. генерацыю і расклады.
Праверка створаных назваў
PR #293 выдаляе суфікс Feed з назваў у новых міграцыях рэгістрацыі або аперацыях разгортвання, створаных камандай make:feed.
Для php artisan make:feed ProductsFeed:
| Значэнне | Да | Пасля |
|---|---|---|
| Створаная назва рэгістрацыі | Products Feed | Products |
| Slug з гэтай назвы | products-feed | products |
Існуючыя назвы ў базе даных і раней створаныя файлы рэгістрацыі не перазапісваюцца. Выкарыстоўвайце фактычны захаваны slug кожнай рэгістрацыі. Гэта змена назваў не змяняе імя класа стужкі і імя выходнага файла.
Дакументацыя і распрацоўка пакета
PR #294 пераймяноўвае старонку дакументацыі Machine Learning у ШІ-агенты. Старонка цяпер даступная па адрасе /ai-agents/; перанакіраванні захоўваюць працу спасылак на папярэдні URL.
PR #297 задае новыя патрабаванні да асяроддзя і захоўвае дакументацыю 1.x. Выберыце версію дакументацыі, якая адпавядае ўсталяванаму пакету; вынікі пошуку і кантэкст LLM абмежаваныя гэтай версіяй.
Асяроддзе распрацоўкі самога пакета пераходзіць на Pest ^5.0 і Testbench ^11.0. Каманды Pest пакета выкарыстоўваюць --tia, а для поўнага паўторнага запуску ў CI, бенчмарках і абнаўленні здымкаў — --fresh. Гэта залежнасці распрацоўкі пакета, а не патрабаванні да тэстаў праграмы.
Праверка
- Перастварыце кэш канфігурацыі праграмы, калі ён выкарыстоўваецца, і перазапусціце воркеры чаргі і доўгажывучыя працэсы планавальніка з новым кодам.
- Пераканайцеся, што кожная рэгістрацыя для выбару мае непусты ўнікальны slug і што каманды і ручныя расклады выкарыстоўваюць яго.
- Згенеруйце стужку кожнага выкарыстанага фармату; параўнайце колькасць падзеленых файлаў, імёны і тыповы змест з захаваным вынікам
1.x. - Праверце выбар мэтаў, аўтаматычныя і ручныя расклады, а таксама генерацыю праз чаргу, калі яны выкарыстоўваюцца.
- Запусціце тэсты праграмы для карыстальніцкіх мадэляў стужак, пераўтваральнікаў, макрасаў і падкласаў перадусталёвак.
- Аднавіце расклады стужак і апрацоўку чаргі пасля паспяховай праверкі схемы і генерацыі.
Адкат
Зноў прыпыніце генерацыю стужак і завяршыце заданні, якія выконваюцца. Аднавіце папярэднія код праграмы, composer.json, composer.lock, канфігурацыю і каманды генерацыі, затым выканайце composer install у сумяшчальным асяроддзі.
Прымяняйце палітыку адкату міграцый праграмы толькі пасля праверкі, ці выкарыстоўвае пакет 1.x, які аднаўляецца, slug. Метад down() міграцыі slug выдаляе толькі гэты слупок; ён не аднаўляе перайменаваныя запісы або выходныя файлы. Пры патрэбе аднавіце змененыя даныя рэгістрацый і выходныя файлы з рэзервовых копій. Перад аднаўленнем генерацыі перастварыце кэш канфігурацыі і перазапусціце воркеры чаргі і працэсы планавальніка.