Application.rb non si aggiorna in production

Salve a tutti.

Ho un problema che mi sta mandando al manicomio…

Facendo vari aggiornamenti ad una applicazione rails, ho apportato
alcune modifiche al controller application.

Dopo aver testato tutte le varie funzioni ho quindi portato
l’applicazione in production, e qui ho scoperto che tutte le modifiche
non funzionano.

Cioè a tutti gli effetti è come se ci fosse ancora il vecchio
application e non il nuovo.

Quindi se lancio il server come script/server funziona tutto bene.
Se invece dalla stessa directory lancio script/server -e production mi
parte con il “vecchio” application.rb

La cosa strana è che in application ho delle funzioni che mi danno dei
messaggi a video. Uno di questi messaggi stampa a video “Salve”. Per
fare un test l’ho cambiato in modo che scriva “Ciao”.

Ora, se lancio script/server scrive “Ciao” (versione aggiornata)
Se lancio script/server -e production invece mi scrive ancora “Salve”
(versione vecchia)

In tutto application.rb la stringa “Salve” non esiste proprio!
Dove se lo va a prendere?

Grazie a tutti.

Problema risolto.

Sotto app/controllers (dove c’è application.rb) avevo fatto una cartella
OLD dove mettevo varie versioni vecchie.

In particolare c’era una vecchia versione di application.rb che avevo
chiamato NO_application.rb.

Quando lanciavo il server in modalità production, per qualche strano
motivo, andava a prendere i metodi in
app/controllers/OLD/NO_application.rb invece di prendersi quelli in
app/controllers/application.rb. A complicare le cose, poi, questo
accadeva solo se il metodo è presente in entrambi i files, mentre per i
metodi nuovi prendeva quelli in app/controllers/application.rb. E
ovviamente in modalità development andava tutto bene.

Versione ruby 1.9
Versione rails 2.2.2

Non posso credere di aver perso 3 ore dietro questa cosa…

Sarebbe interessante sapere se a voi capita lo stesso.

Grazie a tutti.

Ciao!

Credo che quel che ti è successo dipenda dai diversi modi in cui Rails
carica i file che compongono la tua applicazione:

  • in development viene usato un approccio lazy: i file vengono cercati
    e caricati solo quando servono
  • in production tutto viene caricato all’avvio dell’applicazione.

Nel tuo caso, che in effetti è curioso, NO_application.rb non veniva
mai caricato in development perché per Rails era sufficiente trovare
application.rb.

Ciao,
Silvano

2009/3/20 Sam P. [email protected]:

app/controllers/OLD/NO_application.rb invece di prendersi quelli in
Sarebbe interessante sapere se a voi capita lo stesso.

Grazie a tutti.

Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Considera l’ambiente prima di stampare questa email. Dai, che
l’equazione è semplice: meno A4, più alberi.

. . . Silvano S. . . .
email: [email protected]
site: http://www.sistrall.it