pyrech / composer-changelogs

:notebook: Display better summary after Composer update
MIT License
589 stars 26 forks source link

Class 'Pyrech\ComposerChangelogs\Update' not found #10

Closed soullivaneuh closed 8 years ago

soullivaneuh commented 9 years ago

This is thrown just after upgrading to v1.1.0:

$ composer global up
Changed current directory to /home/sullivan/.composer
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing pyrech/composer-changelogs (v1.0)
  - Installing pyrech/composer-changelogs (v1.1.0)
    Downloading: 100%         

PHP Fatal error:  Class 'Pyrech\ComposerChangelogs\Update' not found in /home/sullivan/.composer/vendor/pyrech/composer-changelogs/src/ChangelogsPlugin.php on line 79
PHP Stack trace:
PHP   1. {main}() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/bin/composer:0
PHP   2. Composer\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/bin/composer:44
PHP   3. Symfony\Component\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:82
PHP   4. Composer\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:126
PHP   5. Symfony\Component\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:147
PHP   6. Symfony\Component\Console\Application->doRunCommand() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:195
PHP   7. Composer\Command\GlobalCommand->run() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:878
PHP   8. Composer\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Command/GlobalCommand.php:80
PHP   9. Symfony\Component\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:82
PHP  10. Composer\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:126
PHP  11. Symfony\Component\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:147
PHP  12. Symfony\Component\Console\Application->doRunCommand() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:195
PHP  13. Symfony\Component\Console\Command\Command->run() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:878
PHP  14. Composer\Command\UpdateCommand->execute() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Command/Command.php:259
PHP  15. Composer\Installer->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Command/UpdateCommand.php:143
PHP  16. Composer\Installer->doInstall() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Installer.php:232
PHP  17. Composer\EventDispatcher\EventDispatcher->dispatchPackageEvent() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Installer.php:620
PHP  18. Composer\EventDispatcher\EventDispatcher->doDispatch() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:112
PHP  19. call_user_func:{/home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152}() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152
PHP  20. Pyrech\ComposerChangelogs\ChangelogsPlugin->postPackageUpdate() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152

Fatal error: Class 'Pyrech\ComposerChangelogs\Update' not found in /home/sullivan/.composer/vendor/pyrech/composer-changelogs/src/ChangelogsPlugin.php on line 79

Call Stack:
    0.0002     244120   1. {main}() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/bin/composer:0
    0.0329    3568416   2. Composer\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/bin/composer:44
    0.0360    3932488   3. Symfony\Component\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:82
    0.0373    4075072   4. Composer\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:126
    0.0385    4199848   5. Symfony\Component\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:147
    0.0387    4200768   6. Symfony\Component\Console\Application->doRunCommand() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:195
    0.0387    4201096   7. Composer\Command\GlobalCommand->run() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:878
    0.0416    4434688   8. Composer\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Command/GlobalCommand.php:80
    0.0416    4434688   9. Symfony\Component\Console\Application->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:82
    0.0417    4434832  10. Composer\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:126
    0.0419    4442440  11. Symfony\Component\Console\Application->doRun() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Console/Application.php:147
    0.0420    4442472  12. Symfony\Component\Console\Application->doRunCommand() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:195
    0.0420    4442904  13. Symfony\Component\Console\Command\Command->run() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Application.php:878
    0.0425    4447776  14. Composer\Command\UpdateCommand->execute() /home/sullivan/projects/my/composer-versions-check/vendor/symfony/console/Command/Command.php:259
    0.1617    9708288  15. Composer\Installer->run() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Command/UpdateCommand.php:143
    0.1649    9796584  16. Composer\Installer->doInstall() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Installer.php:232
  193.8515  322774032  17. Composer\EventDispatcher\EventDispatcher->dispatchPackageEvent() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/Installer.php:620
  193.8516  322774520  18. Composer\EventDispatcher\EventDispatcher->doDispatch() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:112
  193.8517  322774920  19. call_user_func:{/home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152}() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152
  193.8517  322775160  20. Pyrech\ComposerChangelogs\ChangelogsPlugin->postPackageUpdate() /home/sullivan/projects/my/composer-versions-check/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php:152

If I run the command again, no problem.

I suspect BC breaking code. This should be handled smoothly even for a composer plugin to avoid this kind of weird error.

pyrech commented 9 years ago

Yeah, in the beginning I thought BC break shouldn't be too problematic for a Composer plugin but indeed, I need to avoid BC breaks like for classical projects.

Sorry for the inconvenience!

soullivaneuh commented 9 years ago

Now you know why! ;-)

pyrech commented 8 years ago

Finally found a way to fix this kind of issues.

Starting from the next release (see #22), all the classes will be autoloaded when the plugin is enabled. Not the cleanest solution but should just work because I don't want the plugin to fail even if the user update to an eventual 2.0 breaking BC.

Thanks again for your issue ;)