2015-01-20 17 views
7

Manteniamo la nostra cache di documentazione in redis e usiamo capistrano per la distribuzione. Tutto funziona bene finché non dobbiamo rimuovere un campo sull'entità.Cancellare la cache di doctrine in redis su deploy

Quando dopo l'installazione comandi compositore sono eseguite otteniamo errore del tipo:

[ReflectionException] ** [out Società Immobiliari \ PlayerRecord :: $ shirtNumber non esiste

$shirtNumber è il campo che abbiamo rimosso. Per poter continuare, è sufficiente cancellare la cache di dottrina ma, poiché si trova nel database redis, la cache è condivisa con la produzione.

La domanda è come è possibile modificare dinamicamente le impostazioni di connessione per i redis su ciascuna distribuzione? Le uniche idee che mi vengono in mente sono:

  1. modificare parameters.yml su inizio della distribuzione
  2. variabile d'ambiente
  3. uso che cambierà ad ogni distribuire
  4. mossa Redis impostazioni di connessione a un altro file che creerà un link simbolico a una delle configurazioni

Avete altre idee o quale è meglio secondo voi?

+0

Questo problema è stato segnalato in http: //www.doctrine-project. org/jira/browse/DDC-3230 ma non è stato ancora risolto –

risposta

3

Così sembra stavo cercando di complicare le cose a causa della mia mancanza di conoscenza.

ho risolto il problema utilizzando Doctrine Cache namespaces

sto usando SncRediBundle e le soluzioni era semplicemente quello di utilizzare questa configurazione:

doctrine: 
    metadata_cache: 
     client: cache 
     namespace: "%kernel.root_dir%" 
     entity_manager: default 
Problemi correlati