La mia applicazione Symfony ha alcune dipendenze che sono necessarie solo per lo sviluppo, il testing e simili. Questi sono definiti nel mio composer.json
nella sezione require-dev
.Perché Symfony non ha i bundle di sviluppo in ambiente prod?
Ecco come li aggiungo in AppKernel.php
:
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
// ...
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
$bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle();
$bundles[] = new Liip\FunctionalTestBundle\LiipFunctionalTestBundle();
}
return $bundles;
}
}
Quando aggiorno la mia domanda, corro php composer.phar install --no-dev --optimize-autoloader
. Questo installa tutti i requisiti non richiesti per l'ambiente di sviluppo e quindi cancella la cache.
Tuttavia, svuotare la cache non riesce con il seguente messaggio:
Questo non è solo un problema con la dottrina Fixtures Bundle. Se cambio l'ordine in modo che il bundle di test funzionale di Liip venga prima, l'errore riguarderà quel pacchetto.
Perché vedo questo errore? Perché Symfony tenta di accedere a questi pacchetti anche se non ci troviamo esplicitamente nell'ambiente di sviluppo (notare il flag --no-dev
per il compositore)? E cosa posso fare per farlo andare via senza dover installare tutte le dipendenze di sviluppo sulla macchina di produzione?
Nizza! Conoscere questa piccola opzione aiuta a mantenere il processo di creazione della produzione semplice e pulito. –