2011-10-20 7 views
27

En cuanto al uso de la consola Rails, cuando realizo algún cambio en un modelo, ¿necesito volver a cargar la consola de rieles cada vez para que ese cambio se refleje?Recargue la consola de rieles

Por ejemplo, tengo mi código original de la siguiente manera:

class Article < ActiveRecord::Base 
    validates :title, :presence => true 
    validates :body, :presence => true 
end 

Más tarde, quiero añadir algún atributo adicional de la siguiente manera.

class Article < ActiveRecord::Base 
    validates :title, :presence => true 
    validates :body, :presence => true 

    def long_title 
    "#{title} - #{published_at}" 
    end 
end 

¿Necesita ejecutar el comando "reload!" cada vez para poder hacer la llamada al método "long_title"? De lo contrario, obtendré un error que dice que el atributo no ha sido definido. y ¿Por qué tenemos que realizar eso manualmente?

Respuesta

44

Sí, debe llamar al reload! ya que esto borrará las constantes cargadas que se han cargado y las cargará tal como se mencionan en la consola.

Si tiene objetos antiguos anteriores al reload!, tendrá que llamar al reload en estos objetos individuales o buscar objetos nuevos y trabajar con ellos si desea probar el nuevo método.

Como alternativa, realmente recomendaría buscar en un marco de prueba como RSpec que le ofrece pruebas repetibles y una red de seguridad para su aplicación.

Parece que está intentando utilizar la consola como una herramienta de prueba para nuevas funcionalidades en su aplicación, que es para lo que RSpec es más adecuado. La consola es realmente buena para la experimentación.

4

rails console hace no clases de recarga después de que hayan sido referenciados .

Si lo hiciera, tendría que hacer una llamada al sistema de archivos para descubrir qué archivos habían cambiado para cada comando.

rails server por el contrario, volverá a cargar las clases modificadas entre las solicitudes en modo de desarrollo.

Supongo que mantendrá la consola abierta debido al tiempo de inicio de rails console. No estoy seguro de cuál es su aplicación, y no estoy seguro de por qué la consola está abierta durante el desarrollo. Sin embargo, si está intentando verificar cambios, le recomiendo que pruebe con la prueba unitaria o rspec y en ese momento puede usar spork para acelerar el tiempo de inicio.

Cuestiones relacionadas