Laravel update: обновляем движок за 8 шагов

Дата публикации: 21.09.2017

laravel-updateВсем привет! 🙂

Если вы следите за судьбой фреймворка Laravel, то могли обратить внимание, что сравнительно недавно свет увидела новая версия движка — 5.5.

В ней появилось много интересного функционала, в частности, возможность предпросмотра отправляемых email в браузере, которую я в будущем планирую продемонстрировать с помощью Laravel Mailable.

А чтобы это и другие новые фичи были у нас доступны, то нужно сделать update Laravel движка.

Если вы подписаны на уведомления проекта и следите за выходом новых статей, то знаете, что сейчас я активно занимаюсь написанием курса по созданию сайта на Laravel. В его рамках я совместно с вами изучаю Laravel на примере создания типового корпоративного сайта, код которого доступен на GitHub.

Начинал я его разрабатывать на Laravel 5.3, потом пытался обновиться до 5.4, но, как выяснилось позже, сделал это не совсем корректно, о чём узнал, не обнаружив анонсированных фич новой версии в коде core-классов.

И теперь, когда вышел Laravel 5.5, я решил попробовать снова, проанализировав ошибки, допущенные ранее.

Так что сегодняшняя публикация — это даже не статья, а заметка, которая будет посвящена процессу обновления версии Laravel и будет представлять из себя пошаговую инструкцию.

Сразу скажу, что не претендую на 100% правильность своих действий, т.к. никаких подобных мануалов я по этой теме в сети не нашёл, поэтому пришлось экспериментировать 🙂

Если по ходу изложения информации поймёте, что всё написанное — чушь, и вы знаете более правильный способ сделать Laravel update — пишите об этом в комментариях и делитесь своими знаниями со всеми.

Поехали!

СОДЕРЖАНИЕ

А нашо оно мне надо?

Это первое, что вы услышали бы от одессита, которому предлагают сомнительную сделку. Сам я не оттуда, но почему-то кажется, что это звучало бы именно так 🙂

Под сомнительной сделкой я имею ввиду как раз необходимость обновлять Laravel. Поэтому перед тем, как приступать, взвесьте все «за» и «против», к которым приведёт данное действие.

Для этого перед Laravel update изучайте список функционала, появившегося в новой версии, который доступен на официальном сайте Laravel. Например, для 5.5 он имеет следующий вид.

Конкретно в моём случае «за» перевесили «против», т.к. мне необходим функционал новой версии на моём текущем проекте, а он, в свою очередь, не так огромен, что делает обновление практически безболезненным. Ну, и версии у меня не так уж сильно и разнятся — 5.3 и 5.5.

http://cccp-blog.com/wp-includes/images/banners/templatemonster/banner_content_new.png

Поэтому если вы создаёте корпоративный сайт вместе со мной по ходу написания статей по Laravel, то я вам настоятельно рекомендую выполнить обновление, чтобы описываемый в будущем функционал у вас заработал.

Кстати, если вы, как и я, обновляетесь до Laravel 5.5, то прошу учесть, что данная версия фреймворка будет устанавливаться и работать только на веб-сервере с PHP 7+, так что если вы по каким-то причинам не можете её изменить, то от обновления лучше всё-таки отказаться.

Если же данное действие не проблематично, то воспринимайте данное требование как возможность наконец-то перейти на PHP 7 и начать использовать его возможности по-полной 🙂

По поводу других ситуаций, когда лучше всё-таки отказаться от Laravel update.

Если бы у меня был масштабный проект вроде MarketPlace или огромного Интернет магазина с кучей функционала, а также с массой сторонних библиотек и Laravel packages, реализованный, скажем, на Laravel 5.1, то, скорее всего, я бы отказался от полноценного обновления до 5.5 ради парочки бонусных фич.

Если бы проект был на Laravel 4.2 или ранее — сразу бы отказался, т.к. отставание четвёртой ветки от пятой огромное как в плане архитектуры, так и в плане самого подхода к разработке.

Возможно, я даже дописал бы новые функции сам или мигрировал бы с чистого проекта на свежей версии.

Иногда это сделать быстрее, чем переписывать имеющиеся методы, удаляя в них упразднённые конструкции.

А именно в этом и заключается обновление Laravel «по уму», т.е. следовательно официальным инструкциям, которые, например, для 5.5 доступны здесь — laravel.com/docs/5.5/upgrade. Как видите, здесь подробно описаны действия по переходу с Laravel 5.4 на 5.5 — что нужно убрать, добавить в существующем коде и как поменять архитектуру проекта, если это нужно.

Ориентировочно, весь процесс рассчитан примерно на час времени.

А если нужно «перескочить» с 5.1 на 5.5? Умножайте это время как минимум на 4. Да плюс добавьте масштабы проекта. И эти расчёт будут действительны, как вы понимаете, только для идеального Laravel update, т.е., когда всё получится с первого раза. Но, сами понимаете, что практически никогда так не получается.

В итоге, на полноценное обновление у вас уйдёт до 2-3 дней. А теперь ещё раз ответьте себе на вопрос «Стоит ли оно того?» 🙂

Инструкция по Laravel update

Если же всё-таки стоит, то для обновления версии Laravel следует произвести следующие действия. По крайне мере, так действовал я, но, повторюсь, не утверждаю, что все мои действия были верными.

1. Бэкап — всему голова.

Думаю, эта привычка уже у многих на автомате. Но, если же вы вдруг ей ещё не обзавелись, то самое время!

Библиотека курсов

Причём, в случае с бэкапом проекта перед Laravel update, он должен содержать ВСЕ файлы, а не только те, что хранятся в репозитории, куда сами файлы движка не попадают.

Лучше на мгновение почувствовать себя школьником, которые не знают о существовании репозиториев, и бэкапят проекты архивами полностью, чем потерять потом что-то ценное.

2. Скопировать содержимое composer.json из репозитория (для требуемой версии Laravel).

Данное действие нужно для того, что от версии к версии движок расширяется новыми компонентами и отказывается от устаревших. Кроме того, меняются их версии.

Если же вы решили произвести обновление Laravel проекта, содержащего сторонние пакеты, команды, специфичные классы автозагрузки и прочее, указываемое в composer.json, то вам лучше сравнить ваш конфиг и содержащийся в репозитории какой-нибудь специальной программой сравнения содержимого файлов типа Meld. Ну, и внести руками нужные изменения. Медленно, зато у вас ничего не «отвалится», т.е. не перестанет работать 🙂

Поскольку в моём тестовом проекте пока ничего подобного нет, то я позволил себе просто заменить имеющийся composer.json на аналогичный файл из репозитория Laravel 5.5.

3. Удаляем composer.lock.

Этот файл, как известно, хранит текущие версии установленных через Composer пакетов. Поскольку файл composer.json, на основании которого lock и создаётся, у нас изменился, я решил удалить последний, чтобы не возникло никаких проблем при обновлении.

4. Очистить кэш Composer.

Данное действие производится запуском следующей команды в консоли:

composer clearcache

Данный шаг необходим для получения актуальных версий пакетов, указанных в composer.json. Иначе они будут ставиться из кэша композера, а не скачиваться.

К примеру, если раньше через Composer вы устанавливали версию пакета 5.2.3, прописанную в composer.json в формате «5.2.*», а сейчас вам нужна версия 5.2.41, то, если кэш не очистить, установится первая как закэшированная.

Следовательно, фреймворк, скорее всего, работать будет не совсем как нужно или вообще не будет.

5. Чистим кэш Laravel.

Вслед за кэшом Composer нужно очистить кэш самого фреймворка от данных, которые могли быть созданы с использованием устаревших пакетов.

Делается это консольной командой, которую нужно запускать в директории Laravel проекта:

php artisan cache:clear

Для уверенности можно пройтись по директориям, вложенным в /storage/framework. Если какие-то файлы там чудом остались, их необходимо удалить вручную кроме .gitignore, чтобы не добавлять файлы кэша в репозиторий — они там не нужны абсолютно.

6. Удалить папку vendor Laravel проекта.

В этом каталоге хранятся файлы движка, которые при Laravel update должны обновляться. Но у меня при обновлении с 5.3 на 5.4 некоторые всё-таки не дополнились новыми конструкциями. Поэтому в этот раз я решил её попросту удалить и скачать затем заново.

Не бойтесь, шаг этот безопасный (если только вы не вносили какие-то правки на уровне движка или кода пакетов, что крайне нежелательно) — все проекты, которые вы разворачиваете у себя на машине из репозиторией, включая сам «чистый» Laravel и так идут без данного каталога.

7. Установка Laravel и пакетов через Composer

На данном этапе нам нужно, фактически, заново установить Laravel со всеми необходимыми для его работы компонентами. Для этого запускаем консоль, переходим в каталог Laravel проекта и выполняем знакомую команду, описанную в статье по ссылке выше:

composer install

8. Проверяем, что установилась требуемая версия Laravel.

Всё, обновление завершено. Надеюсь, никаких проблем в процессе не возникло. Для того, чтобы удостовериться, что Laravel у нас обновился не нужно лазить по файлам движка и искать анонсированные новые фичи. Достаточно лишьвыполнить следующую консольную команду в директории проекта:

php artisan --version

В моём случае в консоли показало 5.5.5 (красивое число 🙂 ). А у вас?

Надеюсь, что у вас всё получилось и сегодняшняя экспериментальная инструкция по Laravel update была вам полезна. Пишите свои отзывы в комментариях, особенно, если что-то пошло не так — будем пытаться исправить баги вместе, дополнив статью об их возможном появлении.

Ну, и если статья вам понравилась, то вы можете сказать мне «Спасибо», репостнув статью в социальных сетях или помочь проекту материально, замотивировав меня уволиться с основной работы и всецело посвятить свою жизнь написанию статей для вас 🙂

Всем удачи и до новых встреч!

P.S.: если вам нужен сайт, но нет времени самостоятельно его разрабатывать, могу порекомендовать вам своего проверенного партнёра - вебстудию Дениса Нихаева. Было не просто, но я всё-таки выбил для вас скидку 20%, что составит до 20 тысяч рублей в зависимости от выбираемого тарифа 🙂 Вот промо код - CCCP. При заказе сообщите его и скидка вам гарантирована! Друзьям тоже можете рассказать 😉

Понравилась статья? Поделись с друзьями:
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
8 голосов, в среднем: 5 из 5

Похожие темы

2 комментария к статье "Laravel update: обновляем движок за 8 шагов"

  1. Филипп

    На «живом» проекте, такая инструкция не сработает! Кое что придется править руками (использовал сравнение файлов). Убедился в этом при обновлении с 5.4 на 5.5 LTS

    1. Pashaster Автор

      Добрый день! 🙂 Почему не сработает и что вы имеете ввиду под ручной правкой файлов? Если вы о добавлении нового функционала и удалении deprecated конструкций — то да, здесь Вы правы. Но об этом я также указывал в статье.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *