ruby-on-rails - instalar - rails create gem tutorial
Rubygem recargar en IRB (3)
Como otros han sugerido, puede usar Kernel # load. Sin embargo, no pierda el tiempo buscando y cargando cada archivo gem, ya que todos los archivos requeridos se almacenan en $ ". Armado con este conocimiento, aquí hay un comando reload irb:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| load(e) }
end
Por ejemplo, si estuvieras usando la gema hirb en irb, simplemente recargarías con:
>> reload ''hirb''
Si, por alguna razón, la carga no funciona (es más delicado con respecto a las extensiones de archivo que las requeridas), puede volver a requerir cualquier archivo eliminando primero su entrada en $ ". Con este consejo, el comando anterior sería:
def reload(require_regex)
$".grep(/^#{require_regex}/).each {|e| $".delete(e) && require(e) }
end
Elige lo que funcione para ti. Personalmente, uso este último.
¿Hay alguna forma de "recargar" o "actualizar" un rubygem en la memoria? Cuando juego en irb, ocasionalmente me gusta modificar mis archivos de gemas, y si necesito la misma gema, no se actualiza en la memoria y da el resultado "falso". Actualmente tengo que salir de IRB, volver a IRB y luego volver a solicitar la gema, tiene que haber una mejor manera ... ¿qué es?
Una forma es usar Kernel#load
. Puede usarlo como lo Kernel#require
, excepto que tiene que incluir explícitamente la extensión de archivo. Sin embargo, tiene sus inconvenientes (incluso algo tan simple como la class Foo < Struct.new(:foo); end
falla, ya que no es posible cambiar la superclase de una clase), así que también me gustaría saber una mejor manera. para hacer esto.
En rieles puedes lograr esto con reload!
en el script / consola, pero no sé qué tipo de magia usan.
Esta esencia parece prometedora, pero no la he probado.
cargar ''nombre_archivo.rb''
uno a la vez para cada uno que fue cambiado ...