2009-08-27 9 views
6

Per un recente progetto, ho avuto un paio di opinioni con codice come questo:Perché Array.count è disponibile in modalità dev ma non in produzione?

<% if @users.count == 0 %> 

questo ha funzionato perfettamente in modalità di sviluppo ... I laminati fuori alla modalità prod ed è esploso, dicendo che conta non è stato un metodo valido di matrice. Ho cambiato ogni istanza per usare invece la lunghezza di Array # e sembra funzionare.

1) Qual è la ragione di questa differenza di comportamento?

2) Esistono altre eccitanti differenze tra le modalità dev e prod che dovrei prestare attenzione?

MORALE: verificare che l'ambiente di hosting di produzione utilizzi la stessa versione di Ruby come ambiente di sviluppo locale. :)

Grazie

Tom

risposta

8

Il metodo count è disponibile solo in Ruby 1.9 e fino. Vi consiglio di utilizzare la stessa versione di Ruby come server per evitare problemi come questo: molto è cambiato in 1.9.

+0

Interessante. Non ho nemmeno considerato il fatto che il mio ambiente di sviluppo eseguiva una versione diversa di Ruby rispetto al mio ambiente di hosting. Mi sento sciocco ora. Posso eliminare questa domanda? ;) +1 – cakeforcerberus

+2

Non lo consiglio. Qualcun altro potrebbe avere lo stesso problema. Sapevo solo la risposta perché avevo un problema simile qualche mese fa. –

+0

Ero abbastanza sicuro che questo è stato introdotto in 1.8, da qualche parte ... questo mi ha morso, ad un certo punto, e non sto lavorando con 1.9. –

0

omg, bluehost ha Ruby 1.8.6 e ora metà della mia applicazione non funziona. Principalmente a causa di questo problema, conteggio.

+0

Sì, è esattamente quello che è successo a me. Sviluppato localmente e caricato su bluehost solo per scoprire questa discrepanza tra la versione. Doloroso. – cakeforcerberus

Problemi correlati