try - ruby tutorial pdf
¿Cómo puedo volver a cargar un script en IRB? (4)
Creo que la load
es lo que estás buscando.
Estoy escribiendo un script de Ruby para usar en el entorno de Rails, pero elegí ejecutarlo desde irb porque volver a cargar la consola de Rails puede ser complicado. Ahora el tiempo de espera es mucho más corto que el de irb, pero me molesta tener que reiniciar iRb y requerir el script cada vez que realizo un cambio. ¿Hay alguna forma más sencilla de volver a cargar un script desde irb?
Encontré un método en este hilo , pero eso solo se aplica a los archivos gem al parecer. Mi declaración requerida se ve así
require "#{File.expand_path(__FILE__)}/../lib/query"
EDITAR: Después de haber intentado load
lugar de require
, todavía no pude hacer que funcionara. No puedo detenerme en estos errores.
ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb
En irb, File.expand_path(__FILE__)}
simplemente devolverá "#{path you ran irb from}/(irb)"
. Lo cual crea una ruta que en realidad no existe. Afortunadamente, todas las rutas de archivos están relacionadas con el lugar donde ejecutó IRB de todos modos. Esto significa que todo lo que necesita es:
load "lib/query.rb"
Si quiere usar __FILE__
en un archivo real, está bien, pero no espere que produzca una ruta válida en irb. Debido a que un irb no hay ningún "archivo" en absoluto, entonces no puede devolver un camino válido en absoluto.
Además, __FILE__
funcionará bien si se usa en un archivo cargado en irb a través de load o require. Porque eso es para lo que es.
En lugar de usar require
, intente load
. El primero solo carga un archivo fuente una vez, mientras que el segundo lo carga cada vez que lo llamas.
según este enlace, debes cargar tu archivo y no olvides la extensión.
Aquí hay una versión más elegante para usar también en este enlace número 2 que también podría ser útil para usted.
Es posible que desee probar por qué su consola de rieles no funciona para usted.