mercoledì 23 dicembre 2009

Aggiornato Lyra a symfony 1.3

Ho aggiornato Lyra a symfony 1.3.1. Per farlo ho cancellato la cartella symfony dal repository Google Code ed impostato la proprietà svn:externals su lib/vendor a questo valore:

symfony http://svn.symfony-project.com/tags/RELEASE_1_3_1/

In effetti inizialmente avevo importato nel repository l'intera copia locale del progetto incluso il framework. Ma continuando in questo modo sarei stato costretto a fare il commit dell'intero framework ad ogni aggiornamento di symfony, con perdita di tempo e spreco di spazio sul repository. Visto che non è certo mia intenzione fare modifiche al framework è molto meglio utilizzare svn:externals in modo da ricevere il contenuto di lib/vendor/symfony direttamente dal repository di symfony. Questa è anche la procedura raccomandata dalla documentazione ufficiale.

Aggiornato il framework, ho seguito le istruzioni riportate sul sito di symfony per il passaggio di un progetto dalla versione 1.2 alla 1.3 ed eseguito dalla cartella principale dell'applicazione il comando

./symfony project:upgrade1.3

Ho subito ricevuto un errore! Riporto la causa perché può capitare a chi si trovi nella stessa situazione. Visto che per Lyra utilizzo Doctrine, nella classe ProjectConfiguration era presente questa istruzione per disabilitare il plugin Propel.

config/ProjectConfiguration.class.php
...
class ProjectConfiguration extends sfProjectConfiguration
{
...
$this->disablePlugins(array('sfPropelPlugin'));
...
}

Dato che in symfony 1.3 Propel non è più l'ORM predefinito, questa riga va rimossa altrimenti la disabilitazione di un plugin non abilitato produce un errore che fa abortire il task project:upgrade1.3.

Una volta risolto questo problema la procedura di aggiornamento è stata portata a termine correttamente. Quindi è bastato ricostruire le classi del modello con

./symfony doctrine:build --all-classes
./symfony cc

Sono state poi necessarie alcune piccole correzioni dovute alla nuova versione di Doctrine (symfony 1.3 utilizza Doctrine 1.2). Chi fosse interessato ai dettagli può consultare il log SVN relativo alla revisione 31: i file modificati sono molti, ma la maggior parte delle modifiche sono state fatte automaticamente dal task project:upgrade1.3. L'aggiornamento, a parte il primo intoppo iniziale, è stato molto semplice.

A chi volesse provare la nuova versione, dopo il checkout dal repository consiglierei di ricreare non solo le classi, ma anche di azzerare e generare il database ricaricando i dati di esempio. Almeno è quello che ho fatto io con

./symfony doctrine:build --all --and-load

il comando è equivalente a

./symfony doctrine:build-all-reload

che per il momento può essere ancora utilizzato anche se è bene iniziare ad usare la nuova sintassi che sarà l'unica accettata da symfony 1.4. L'elenco dei nuovi comandi 'build' di Doctrine si ottiene con

./symfony help doctrine:build

Alla fine non fa male la pulizia della cache

./symfony cc

Al più presto sarà fatto l'aggiornamento a symfony 1.4.

3 commenti:

David ha detto...

Ciao Massimo,

Il tuo tutoriale di Lyra mi pare molto interessante. Grazie mile e ti pregho de continuare, lo trovo tanto o più interessante di quello de Jobeet.

Massimo ha detto...

Ti ringrazio. Gli articoli su Lyra continueranno anche se probabilmente saranno pubblicati con minore frequenza. Inoltre non ci sarà più un articolo per ogni commit (più o meno) come accaduto fino ad ora, semplicemente perché procedere in questo modo richiederebbe troppo tempo. Consiglio quindi a chi è interessato a seguire lo sviluppo dell'applicazione di tenere d'occhio anche l'elenco delle revisioni sul repository dove le novità potranno essere più frequenti degli articoli su questo blog.

Anonimo ha detto...

Grazie Massimo.

Se così, ti pregho di annotare al "Commit log message" le cambiamenti, più o meno come hai fatto fino adesso.
In questa maniera potremo capire meglio lo sviluppo.

Grazie mille.

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.