Laravel: no se puede instalar desde mi control de origen

Necesito automatizar la configuration / actualización de mi proyecto laravel en mi máquina de producción desde el control de fuente.

Escribí un script bash para clonar la fuente del repository GIT y ejecutar la configuration.

El código git va a la carpeta /var/www/prod/mainapp/ , por lo que el siguiente código bash se ejecuta después del command git:

 cd /var/www/prod/mainapp/app/ composer install # composer update will not work as well php artisan dump-autoload php artisan optimize 

Recibo el siguiente error cuando el código llega a: php artisan optimize

PHP Fatal error: Class 'App\Providers\SocialUserProvider' not found in /var/www/prod/mainapp/app/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 146

en mi app.php tengo los siguientes proveedores:

  App\Providers\FacebookGraphProvider::class, Torann\GeoIP\GeoIPServiceProvider::class, App\Providers\SocialUserProvider::class, 

este es mi compositor.json:

 { "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "type": "project", "require": { "php": ">=5.5.9", "laravel/framework": "5.2.*", "torann/geoip": "0.2.3" }, "require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", "phpunit/phpunit": "~4.0", "symfony/css-selector": "2.8.*|3.0.*", "symfony/dom-crawler": "2.8.*|3.0.*" }, "autoload": { "classmap": [ "database", "app/Facades", "app/Services" ], "psr-4": { "App\\": "app/" } }, "autoload-dev": { "classmap": [ "tests/TestCase.php" ] }, "scripts": { "post-root-package-install": [ "php -r \"copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "php artisan key:generate" ], "post-install-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postInstall", "php artisan optimize" ], "post-update-cmd": [ "Illuminate\\Foundation\\ComposerScripts::postUpdate", "php artisan optimize" ] }, "config": { "prefernetworking-install": "dist" } } 

Necesita agregar al map de class la línea que indicará quién debe cargarse automáticamente. app/Providers

 "classmap": [ "database", "app/Facades", "app/Services", "app/Providers" //this is the missing part. ] 

Me he encontrado con esto algunas veces.

Mi solución es correr

 composer install --no-scripts 

Está obteniendo ese error debido a los scripts de preinstallation en su file composer.json y al agregar ese indicador al process de installation omite estos scripts.

Una vez que tenga todo instalado, puede usar la composer install composer update y la composer update como lo haría habitualmente.