run rails migrations generate example create commands ruby-on-rails console

ruby on rails - migrations - ¿Puede la consola de Rails recargar módulos bajo lib?



ruby on rails run migrations (4)

Agregue lo siguiente a config/initializers/reload.rb

class Object def reload_lib! Dir["#{Rails.root}/lib/**/*.rb"].map { |f| [f, load(f) ] } #.all? { |a| a[1] } # uncomment above if you don''t want to see all the reloaded files end end

Ahora puede volver a cargar todos los archivos en lib escribiendo reload_lib! en la consola

Tengo un módulo en mi proyecto Rails bajo lib. Ejecuto ''rails c'' y hago algunos experimentos en la consola. Realizo un cambio en el módulo bajo lib, escribe ''recargar!'' Desde la consola y no vuelve a cargar el archivo. Tengo que salir de la consola y reiniciar, lo que es un verdadero dolor.

¿Hay una mejor manera de volver a cargar ese archivo?



Prueba esto:

load "#{Rails.root}/lib/yourfile.rb"


este es el monkeypatch que podría ayudarte, pégalo en la consola de rieles (o podrías poner este código en un archivo de monkeypatch, aunque no recomiendo el uso de Monkeypatching Object con un método de utilidad):

class Object def self.reload_myself! method = (self.instance_methods(false) + self.methods(false)).select{|method| method.to_s[0] =~ /[A-Za-z]/}.last if method if self.instance_methods(false).index method method = self.instance_method(method) elsif method = self.method(method) end if (method.source_location) source_location = method.source_location[0] puts "reloading: #{source_location}" load "#{source_location}" else puts "could not reload #{self.name}" end end end end

y puedes llamar

reload_myself!

en cualquier objeto para recargar su código fuente.