Oggi mi sono accorto che una mia applicazione migrata da 2.1 a 2.3 non
vedeva le modifiche che stavo facendo a controller e view. Mi toccava
stoppare e rilanciare mongrel tutte le volte. Dopo 3 o 4 iterazioni ho
iniziato a cercare in giro cosa potesse essere accaduto.
Ho imboccato la pista giusta quando ho trovato un post che parlava degli
effetti del metodo config.threadsafe! che per l’appunto configura Rails
per girare in modo multithread, con gli effetti che si
manifestavano sul mio computer.
Ho inserito all’inizio di environments/development.rb l’esatto contrario
dell’implementazione di quel metodo e tutto è tornato a posto. Il codice
è:
config.threadsafe! però non dovrebbe esser chiamato nel development mode
ed in effetti nel mio codice non ce n’è traccia. Si tratta però di
un’applicazione aggiornata pian piano dai tempi di Rails 1.0.2 per cui
chissà che side effects si annidano nei vari file di configurazione.
Oggi mi sono accorto che una mia applicazione migrata da 2.1 a 2.3 non
vedeva le modifiche che stavo facendo a controller e view. […]
E oggi invece ho scoperto che in production mode non mi venivano più
lette le variabili globali definite in config/environment.rb Quelle in
config/environments/*.rb invece erano ok.
Lo so che sarebbe meglio quanto meno trasformarle una volta per tutte in
attributi di classe di qualche modello, ma invece che riscrivere pezzi
di applicazione ho trovato una soluzione più rapida: spostando la loro
definizione in un file in config/initializers (ad esempio
global_variables.rb) vengono lette di nuovo in tutti gli environment.
Le sorprese con questa migrazione alla 2.3 saranno finite? Vedremo!