stefanzweifel / screeenly

📸 Screenshot as a Service
https://secure.screeenly.com
MIT License
492 stars 102 forks source link

Laravel 8.x Shift #347

Closed stefanzweifel closed 3 years ago

stefanzweifel commented 3 years ago

This pull request includes the changes for upgrading to Laravel 8.x. Feel free to commit any additional changes to the shift-38889 branch.

Before merging, you need to:

If you need help with your upgrade, check out the Human Shifts. You may also join the Shifty Coders Slack workspace to level-up your Laravel skills.

stefanzweifel commented 3 years ago

:information_source: Shift noticed you have additional namespaces in your application. You may use the Consolidate Namespaces Shift to simplify your namespaces into the default Laravel App namespace.

stefanzweifel commented 3 years ago

:information_source: Laravel 8 streamlined the Exception Handler into a single register method to make it easier to add custom logic around rendering or reporting errors within your application.

While this change is not required, Shift recommends comparing yours against the Laravel 8.x version as an opportunity to reduce code and be fully up-to-date.

stefanzweifel commented 3 years ago

:information_source: The RouteServiceProvider no longer prefixes the controller namespace by default in Laravel 8. While you may still set this property, you are encouraged to register your routes using static ::class references.

You may automate the conversion to static class references using the Shift Workbench.

stefanzweifel commented 3 years ago

:x: Laravel 8 condenses the RouteServiceProvider as well as configured the new rate limiters. Shift was unable to automate this change. You should compare yours against the Laravel 8.x version and merge any changes.

stefanzweifel commented 3 years ago

:information_source: Laravel 8 introduced class based factories. Shift automated this change. However, if you were using a community package for factories or other custom code, you should review your factories for additional changes.

If you encounter an issue, you may revert this commit and temporarily install the laravel/legacy-factories package. You may then automate the conversion to class based factories using the Shift Workbench.

stefanzweifel commented 3 years ago

:information_source: Laravel 8 added a uuid column to the failed_jobs table to support the new job batching features.

If your application is currently using the failed_jobs table, you may generate a custom migration for this command by running:

php artisan make:migration AddUuidToFailedJobsTable

Then copy and paste the contents from Shift's AddUuidToFailedJobsTable class to add the uuid column and generate UUIDs for your existing failed jobs.

stefanzweifel commented 3 years ago

:information_source: Laravel 8 added a new ENV variable of LOG_LEVEL. While the log level is defaulted in the configuration, you may take this opportunity to set it accordingly in your environments.

stefanzweifel commented 3 years ago

:warning: Shift upgraded your configuration files by defaulting them and merging your true customizations. These include values which are not changeable through core ENV variables. This should make maintaining your config files easier.

You should review this commit for any additional customizations. If you have a lot of customizations, you may wish to undo this commit with git revert and make these config file changes manually.

stefanzweifel commented 3 years ago

:information_source: Shift updated your dependencies for Laravel 8. While many of the popular packages are reviewed, you may have to update additional packages in order for your application to be compatible with Laravel 8.

Watch dealing with dependencies for tips on handling package incompatibilities.

stefanzweifel commented 3 years ago

:warning: Laravel 8 now requires PHPUnit 9 which made some configuration changes to its config file. You may automate these changes by running vendor/bin/phpunit --migrate-configuration or comparing your phpunit.xml to the Laravel 8 version and merging any changes.

stefanzweifel commented 3 years ago

:information_source: Laravel 8 reintroduced the app/Models folder by default. This is an optional change. Laravel and the artisan commands will automatically detect if you are using the app/Models folder or not.

If you wish to modernize your application to use the app/Models folder, you may run the Namespace Models Shift for free.

stefanzweifel commented 3 years ago

:tada: Congratulations, you're now running the latest version of Laravel.

The following Shifts may be used ensure your application is fully upgraded and easier to maintain in the future:

You may run these Shifts and stay upgraded forever as well by subscribing to a Shifty Plans.