Recarga la consola rails


En cuanto al uso de la consola Rails, cuando hago algún cambio en un modelo, ¿necesito recargar la consola rails cada vez que hago ese cambio refleja?

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 agregar algún atributo adicional como se muestra a continuación.

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 que sea capaz de hacer la llamada al método "long_title"? De lo contrario, obtendré un error diciendo que el atributo no ha sido definido. y por qué ¿tenemos que hacerlo manualmente?

Author: Sarun Sermsuwan, 2011-10-20

2 answers

Sí, necesita llamar a reload! ya que esto borrará las constantes cargadas que se han cargado y las cargará a medida que se hace referencia a ellas en la consola.

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

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

Parece que está tratando de usar 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 muy buena para la experimentación.

 44
Author: Ryan Bigg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-20 03:40:19

rails console does not reload classes after they have been referenced.

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

rails server por otro lado recargará las clases cambiadas entre solicitudes en modo de desarrollo.

Supongo que está manteniendo la consola abierta debido al tiempo de inicio 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á tratando de verificar los cambios, le recomiendo probar con unit test o rspec y en ese momento puede usar spork para acelerar el tiempo de inicio.

 6
Author: daicoden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-05 22:40:24