Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Laravel 9.x Shift #29

Merged
merged 16 commits into from
Nov 16, 2022
Merged

Laravel 9.x Shift #29

merged 16 commits into from
Nov 16, 2022

Conversation

BrendanTWhite
Copy link
Owner

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

Before merging, you need to:

  • Checkout the shift-74592 branch
  • Review all pull request comments for additional changes
  • Run composer update (if the scripts fail, add --no-scripts)
  • Clear any config, route, or view cache
  • Thoroughly test your application (no tests?, no CI?)

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.

Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions.

You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root.

For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
PHP 5.5.9 adds the new static `class` property which provides the fully qualified class name. This is preferred over using strings for class names since the `class` property references are checked by PHP.
In an effort to make upgrading the constantly changing config files
easier, Shift defaulted them and merged your true customizations -
where ENV variables may not be used.
`<env>` tags have a lower precedence than system environment variables making it easier to overwrite PHPUnit configuration values in additional environments, such a CI.

Review this blog post for more details on configuration precedence when testing Laravel: https://jasonmccreary.me/articles/laravel-testing-configuration-precedence/
@BrendanTWhite
Copy link
Owner Author

ℹ️ Laravel 9 moved the resources/lang folder to the top level of the project. While Shift moved and replaced references to this folder, you may have additional references to this folder which need to be updated.

@BrendanTWhite
Copy link
Owner Author

⚠️ Laravel 9 transitioned from SwiftMailer to Symfony Mailer. While this transition should be relatively seamless and Shift automates any tedious changes, there are some changes which are not reliably automated.

Dependencies
Some mail providers may require an additional dependency. For example, if you are using Mailgun, then you will need to install the symfony/mailgun-mailer package:

composer require symfony/mailgun-mailer symfony/http-client

For more details on what has changed you may review the Symfony Mailer section of the Upgrade Guide.

@BrendanTWhite
Copy link
Owner Author

⚠️ The FILESYSTEM_DRIVER environment variable was renamed to FILESYSTEM_DISK in Laravel 9. Shift attempted to automate this change, but you should review any additional environment configuration and rename this variable.

@BrendanTWhite
Copy link
Owner Author

⚠️ Shift upgraded your configuration files by defaulting them and merging your true customizations. These include values which are not changeable through core ENV variables.

You should review this commit for additional customizations or opportunities to use new ENV variables. If you have a lot of customizations, you may undo this commit with git revert 46b02799 and make the config file changes manually.

@BrendanTWhite
Copy link
Owner Author

ℹ️ The FILESYSTEM_CLOUD environment variable was removed in a later release of Laravel 8. While you may still use the cloud disk, you are encouraged to configure your own disks.

@BrendanTWhite
Copy link
Owner Author

⚠️ The token driver for API authentication is no longer available. This driver was not very robust and was removed from the documentation. Laravel now recommends using Sanctum.

If you were using the token driver, you may re-add it within your auth.php configuration file then migrate to Sanctum at your convenience.

@BrendanTWhite
Copy link
Owner Author

ℹ️ Shift updated your dependencies for Laravel 9. 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 9. Watch dealing with dependencies for tips on handling any Composer issues.

The following dependencies were updated by a major version and may have their own changes. You may check their changelog for any additional upgrade steps.

@BrendanTWhite
Copy link
Owner Author

ℹ️ Laravel 9 adopted anonymous migrations. Shift automated this change to align with modern Laravel conventions and avoid naming migrations.

@BrendanTWhite
Copy link
Owner Author

ℹ️ Sanctum 3.x added an expires_at column to support expiring tokens. Shift detected you have a migration for this table and created a migration for this new column. Be sure to run php artisan migrate to complete your upgrade.

@BrendanTWhite
Copy link
Owner Author

ℹ️ All of the underlying Symfony components used by Laravel have been upgraded to Symfony 6. If you are directly interacting with any Symfony component, you should review the Symfony change log for additional changes.

@BrendanTWhite
Copy link
Owner Author

ℹ️ Laravel 9 now uses Vite to build frontend assets. While you may continue to use Laravel Mix, it is no longer the default. If you wish to modernize your application to use Vite, you may run the Vite Converter for free.

@BrendanTWhite
Copy link
Owner Author

🎉 Congratulations, you're now running the latest version of Laravel!

Next, you may optionally run the following Shifts to ensure your application is fully upgraded, adopts the latest Laravel conventions, and easier to maintain in the future:

  • Upgrade Checker ensures your application is fully upgraded by detecting any outdated code.
  • Laravel Fixer automatically updates your code to the latest Laravel conventions.
  • Tests Generator intelligently generates model factories, HTTP Tests, and configuration for your application.
  • CI Generator intelligently generates CI jobs to lint PHP, check code style, and run tests, including Dusk.

You may also use the Shift Workbench to automate common tasks for maintaining your Laravel and PHP applications.

@BrendanTWhite BrendanTWhite merged commit 08f685b into main Nov 16, 2022
@BrendanTWhite BrendanTWhite deleted the shift-74592 branch November 16, 2022 09:11
BrendanTWhite added a commit that referenced this pull request Nov 16, 2022
* 'main' of github.com:BrendanTWhite/morplees:
  Migrate from Laravel Mix to Vite (#30)
  Laravel 9.x Shift (#29)

# Conflicts:
#	routes/web.php
BrendanTWhite added a commit that referenced this pull request Nov 16, 2022
* main:
  Breeze update & Password Fix (#32)
  small tweak to email config
  Laravel Linter (#31)
  Migrate from Laravel Mix to Vite (#30)
  Laravel 9.x Shift (#29)
  turned on https://github.com/spatie/laravel-mail-preview
  Fixes bug #22
  Now sorting the menu by date order. Closes #27.
  Tweaked Envoy command
BrendanTWhite added a commit that referenced this pull request Nov 17, 2022
* staging:
  Seems to work. Closes #24.
  Updated Breeze, which turned out to be unnecessary but what the heck, now it's a bit newer.
  Fixed Profile routes in routes/web.php. I had accidentally removed the `use` last time I updated Breeze.
  If there is no family on a new user, then create one. This means new users can now create new accounts.
  small update to Envoy scripts
  Envoy now clears caches
  Maybe THIS will fix the staging problem
  We can't build these on tigertech's servers, so we need to build them locally and migrate via git
  This should fix the issue with https://github.com/spatie/laravel-mail-preview failing in Staging because it wasn't installed there
  We haven't installed (and shouldn't use) https://github.com/spatie/laravel-mail-preview in anything other than a local dev environment.
  Breeze update & Password Fix (#32)
  small tweak to email config
  Laravel Linter (#31)
  Migrate from Laravel Mix to Vite (#30)
  Laravel 9.x Shift (#29)
  turned on https://github.com/spatie/laravel-mail-preview
  Fixes bug #22
  Now sorting the menu by date order. Closes #27.
  Tweaked Envoy command
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants