2011-03-12 24 views
14

es la consola en rieles (~ rails c) dinámica? Por ejemplo; si abro la consola y luego realizo cambios en un modelo, ¿seleccionará estos cambios o tendré que salir de la consola y ejecutar nuevamente el rails c para que recoja los cambios en el modelo?¿La consola de los rieles es dinámica?

Respuesta

35

Deberá llamar al método reload! en la consola para volver a cargar los cambios. La magia de este método se llama automáticamente por rails server en modo de desarrollo.

Como comentario de señalar por debajo y otra respuesta aquí, si cambia cosas que hacer con el medio ambiente de la aplicación, tales como la adición de nuevas gemas a la Gemfile, realizar cambios en cualquier cosa en config o la adición de un nuevo plugin entonces necesitarás reiniciar la consola. Cualquier cambio a app será recargable con reload!

Si estuviera usando esta manera particular de probar que un método estaba funcionando, no lo haría. Las variantes de prueba (como en, Test :: Unit o RSpec) son mucho más agradables porque tiene una forma reproducible de ejecutarlas una y otra vez. rails console es ideal para pruebas únicas, pero si desea escribir una aplicación que se pueda mantener, escriba las pruebas.

+1

Si cambias tus gemas o complementos, deberás salir y reiniciar la consola; 'reload!' no cubre este tipo de cosas. –

+3

Aquí hay un caso que no es evidente. Digamos que f es una instancia de la clase Foo. Si cambias Foo, escribe 'reload!', E incluso 'f.reload', f.bar aún no se habrá actualizado. Debes reasignar a Foo. Al menos, así es como funciona para mí en OS X Lion usando RVM en Ruby 1.9.3p125 y Rails 3.2.0. – Aaron

+0

@ Aaron, 'f' está en la memoria, por lo que no cambiará aunque cambie sus datos en la base de datos hasta que lo reasigne. – Ari

1

Como señala Ryan, debe llamar de nuevo! para volver a cargar los cambios. También debe tener en cuenta que algunos cambios requieren que salga y vuelva a iniciar la consola. Estos cambios incluyen cosas como actualizar tus archivos de configuración o de entorno (no estoy seguro de cuál es la lista completa)

Cuestiones relacionadas