2009-08-27 14 views
6

Para un proyecto reciente, tuve un par de puntos de vista con código como este:¿Por qué Array.count está disponible en modo dev pero no en producción?

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

Esto funcionó a la perfección en el modo de desarrollo ... Me di la vuelta hacia fuera a modo de prod y explotó, diciendo que el recuento no era una método válido de Array. Cambié cada instancia para usar Array # length en su lugar y parece estar funcionando.

1) ¿Cuál es el motivo de esta diferencia en el comportamiento?

2) ¿Hay alguna otra diferencia emocionante entre los modos dev y prod que debo tener en cuenta?

MORAL: Asegúrese de que su entorno de alojamiento de producción utiliza la misma versión de Ruby que su entorno de desarrollo local. :)

Gracias

Tom

Respuesta

8

El método count sólo está disponible en Ruby 1.9 en adelante. Te recomiendo que uses la misma versión de Ruby como servidor para evitar problemas como este: muchas cosas han cambiado en 1.9.

+0

Interesante. Ni siquiera consideré el hecho de que mi entorno de desarrollo ejecutaba una versión diferente de Ruby que mi entorno de alojamiento. Me siento tonto ahora. ¿Puedo eliminar esta pregunta? ;) +1 – cakeforcerberus

+2

No lo recomiendo. Alguien más podría tener el mismo problema. Solo sabía la respuesta porque tuve un problema similar hace unos meses. –

+0

Estaba bastante seguro de que esto se introdujo en 1.8, en algún lugar ... esto me mordió, en un punto, y no estoy trabajando con 1.9. –

0

omg, bluehost tiene Ruby 1.8.6 y ahora, la mitad de mi aplicación no funciona. Principalmente debido a este problema, con el recuento.

+0

Sí, eso es exactamente lo que me sucedió. Desarrollado localmente y cargado a bluehost solo para descubrir esta discrepancia entre la versión. Doloroso. – cakeforcerberus

Cuestiones relacionadas