symfony / recipes

Symfony Recipes Repository
https://github.com/symfony/recipes/blob/flex/main/RECIPES.md
MIT License
953 stars 472 forks source link

Replace Mailcatcher with Mailpit #1281

Closed ker0x closed 5 months ago

ker0x commented 5 months ago
Q A
License MIT
Doc issue/PR -

As suggested by @kbond in #1279, I would like to discuss replacing Mailcatcher with Mailpit, which offers many more features in addition to a much lighter docker image (27 MB for Mailpit compared to 90 MB for Mailcatcher).

I already use it in a project and integration with the Symfony CLI works without modification.

github-actions[bot] commented 5 months ago

Thanks for the PR 😍

How to test these changes in your application

  1. Define the SYMFONY_ENDPOINT environment variable:

    # On Unix-like (BSD, Linux and macOS)
    export SYMFONY_ENDPOINT=https://raw.githubusercontent.com/symfony/recipes/flex/pull-1281/index.json
    # On Windows
    SET SYMFONY_ENDPOINT=https://raw.githubusercontent.com/symfony/recipes/flex/pull-1281/index.json
  2. Install the package(s) related to this recipe:

    composer req 'symfony/flex:^1.16'
    composer req 'symfony/mailer:^4.3'
  3. Don't forget to unset the SYMFONY_ENDPOINT environment variable when done:

    # On Unix-like (BSD, Linux and macOS)
    unset SYMFONY_ENDPOINT
    # On Windows
    SET SYMFONY_ENDPOINT=

Diff between recipe versions

In order to help with the review stage, I'm in charge of computing the diff between the various versions of patched recipes. I'm going keep this comment up to date with any updates of the attached patch.

RafaelKr commented 5 months ago

@fabpot I just ran composer recipes:update and selected symfony/mailer from the list.

composer recipes:update    
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/vendor/symfony/console/Command/DumpCompletionCommand.php:48
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/vendor/symfony/console/Command/DumpCompletionCommand.php:56
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:881
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:886
Which outdated recipe would you like to update? (default: 0)
  [0] doctrine/doctrine-bundle
  [1] symfony/mailer
  [2] symfony/monolog-bundle
  [3] symfony/translation
 > 1
  Updating recipe for symfony/mailer...

   Yes! Recipe updated! 

  No files were changed as a result of the update.

So it told it updated the recipe and in the symfony.lock the ref of symfony/mailer changed to df66ee1f226c46f01e85c29c2f7acce0596ba35a. But my docker-compose.override.yml stayed the same. Only after the rollback of symfony.lock and running composer recipes:install symfony/mailer --force the docker config was updated.

composer recipes:install symfony/mailer --force
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/vendor/symfony/console/Command/DumpCompletionCommand.php:48
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/vendor/symfony/console/Command/DumpCompletionCommand.php:56
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:881
Deprecation Notice: Using ${var} in strings is deprecated, use {$var} instead in phar:///usr/local/bin/composer/src/Composer/Autoload/AutoloadGenerator.php:886
Run command with -v to see more details

Symfony operations: 1 recipe (0a02f8c0bedf619d1bf7e60e08493aad)
  - Configuring symfony/mailer (>=4.3): From github.com/symfony/recipes:main
  -  WARNING  symfony/mailer (>=4.3): From github.com/symfony/recipes:main
    The recipe for this package contains some Docker configuration.

    This may create/update compose.yaml or update Dockerfile (if it exists).

    Do you want to include Docker configuration from recipes?
    [y] Yes
    [n] No
    [p] Yes permanently, never ask again for this project
    [x] No permanently, never ask again for this project
    (defaults to y): 

 Files have been reset to the latest version of the recipe. 

  * Use git diff to inspect the changes.

    Not all of the changes will be relevant to your app: you now
    need to selectively add or revert them using e.g. a combination
    of git add -p and git checkout -p

  * Use git checkout . to revert the changes.

    New (untracked) files can be inspected using git clean --dry-run
    Add the new files you want to keep using git add
    then delete the rest using git clean --force

Is it expected behavior, that recipes:update doesn't update the docker config? I did expect that and was wondering why it wasn't working like that.

Besides from that this drop-in replacement works perfectly! Thanks.