Ruby: ¿Cómo cargar un archivo en la consola interactiva de ruby (IRB)?
84
Estoy usando IRB (consola interactiva de ruby) para aprender a programar con Ruby. ¿Cómo cargo un archivo en la consola si primero escribo mis programas en un editor de texto?
Si desea agregar más que solo -r entre cada archivo, bueno, eso es lo que hago y funciona. Así es como cargo todos mis archivos en irb para poder acceder a todas las cosas de mi aplicación dentro de irb, por supuesto que uso un script de rake para cargar el archivo de arranque en irb, así que puedo rake irby lo hace todo por mí.
Thermatix
este fue mi primer intento después de leer man, pero uso -r some_file.rb, 30 minutos después encontré esto y agregué ./, gracias xd
Alexis
En Ubuntu 16.04, irb -r /foo/foo.rb
elimino
Esto no da acceso a las variables del archivo.
Radon Rosborough
47
Usando ruby 1.9.3 en Ubuntu 14.04, puedo cargar archivos desde el directorio actual irbcon la siguiente línea de comando:
irb -I . -r foo.rb
¿Dónde foo.rbestá el archivo que quiero cargar desde mi directorio actual? La -Iopción es necesaria para agregar el directorio actual ( .) a la ruta de carga de ruby, como se explica en la página de manual de ruby. Esto hace posible requirearchivos del directorio actual, que es lo -rque irblogra la opción .
La pieza clave que no fue obvia para mí cuando tuve este problema es la -Iopción. Una vez que haga eso, puede llamar require 'foo.rb'desde dentro irbpara cualquier archivo en el directorio actual. Y, por supuesto, puede especificar cualquier directorio que desee, no solo .con la -Iopción. Para incluir varios directorios en la ruta de carga, sepárelos con dos puntos (:), por ejemplo:
irb -I foo/:bar/:baz/
Este comando agregará los directorios foo, bary bazal camino de carga de rubí.
La última alternativa es usar la ruta relativa o absoluta al archivo cuando se usa requireo -rpara cargar un archivo:
El resultado de su solución es el mismo que llamar a 'ruby foo.rb', pero al menos puede ver lo que está sucediendo. Pero quiero dejar la consola abierta, para poder ejecutar algunos comandos más. ¿Alguna idea?
Paul Verschoor
32
Escribir irb
Y entonces
require'./ruby_file.rb'
Esto supone que ruby_file.rb está en el mismo directorio. Ajustar en consecuencia.
Esto parece responder a la pregunta de cómo volver a cargar un script también. Estuve usando requirelo que no parece recargar el script (cualquier modificación a la fuente original no se refleja en su sesión), mientras que sourceparece reflejar cambios en el script original.
Michael Welch
4
Depende de tu rubí. Ruby 1.8 incluye su ruta actual, mientras que ruby 1.9 no. Evalúe $:para determinar si su ruta está incluida o no. Entonces, en ruby 1.9 debes usar la ruta completa, que siempre es una apuesta segura.
Entonces puede usar requireo loadpara incluir el archivo.
requireno requiere que agregue el sufijo del archivo cuando intente encontrarlo y solo incluirá el archivo una vez. requiredebe usarse en lugar de la loadmayor parte del tiempo.
Linux Mint. Lo siento, debería haber agregado eso.
Mike Kennedy
0
Para aquellos que quieran cargar el archivo .rb desde un directorio diferente. Simplemente agregue un representante de cadena del directorio a $: variable.
Respuestas:
Si solo necesita cargar un archivo en IRB, puede invocarlo
irb -r ./your_file.rb
si está en el mismo directorio.Esto requiere automáticamente el archivo y le permite trabajar con él inmediatamente.
fuente
rake irb
y lo hace todo por mí.irb -r /foo/foo.rb
Usando ruby 1.9.3 en Ubuntu 14.04, puedo cargar archivos desde el directorio actual
irb
con la siguiente línea de comando:¿Dónde
foo.rb
está el archivo que quiero cargar desde mi directorio actual? La-I
opción es necesaria para agregar el directorio actual (.
) a la ruta de carga de ruby, como se explica en la página de manual de ruby. Esto hace posiblerequire
archivos del directorio actual, que es lo-r
queirb
logra la opción .La pieza clave que no fue obvia para mí cuando tuve este problema es la
-I
opción. Una vez que haga eso, puede llamarrequire 'foo.rb'
desde dentroirb
para cualquier archivo en el directorio actual. Y, por supuesto, puede especificar cualquier directorio que desee, no solo.
con la-I
opción. Para incluir varios directorios en la ruta de carga, sepárelos con dos puntos (:), por ejemplo:irb -I foo/:bar/:baz/
Este comando agregará los directorios
foo
,bar
ybaz
al camino de carga de rubí.La última alternativa es usar la ruta relativa o absoluta al archivo cuando se usa
require
o-r
para cargar un archivo:o desde dentro
irb
:> require './foo.rb'
fuente
Escribir
irb
Y entonces
require './ruby_file.rb'
Esto supone que ruby_file.rb está en el mismo directorio. Ajustar en consecuencia.
fuente
require_relative
. Por ejemplo,require "./lib/foo"
hace lo mismo querequire_relative "lib/foo"
.rb
es opcional, puede escribirrequire './ruby_file'. I checked in
ruby 1.9.3p551`Dos caminos:
source("filename.rb")
require("filename.rb")
fuente
require
lo que no parece recargar el script (cualquier modificación a la fuente original no se refleja en su sesión), mientras quesource
parece reflejar cambios en el script original.Depende de tu rubí. Ruby 1.8 incluye su ruta actual, mientras que ruby 1.9 no. Evalúe
$:
para determinar si su ruta está incluida o no. Entonces, en ruby 1.9 debes usar la ruta completa, que siempre es una apuesta segura.Entonces puede usar
require
oload
para incluir el archivo.require
no requiere que agregue el sufijo del archivo cuando intente encontrarlo y solo incluirá el archivo una vez.require
debe usarse en lugar de laload
mayor parte del tiempo.Consulte Agregar un directorio a $ LOAD_PATH (Ruby) si va a utilizar ruby 1.8
fuente
Escriba los códigos ruby en el editor de texto.
Guárdelo con la extensión .rb (por ejemplo: demo.rb ).
En Linux, abra su terminal y luego cambie el directorio a la ubicación actual de ese archivo (el comando cd se usa para cambiar el directorio).
Después de eso, escriba irb y su nombre de archivo (no olvide incluir su extensión (.rb)).
En esa imagen, cargué un archivo ruby simple que solo imprime "ruby".
fuente
Otra forma de cargar la ruta en irb es simplemente escribir require y luego arrastrar y soltar el archivo en la terminal. Probado usando Linux Mint.
fuente
Para aquellos que quieran cargar el archivo .rb desde un directorio diferente. Simplemente agregue un representante de cadena del directorio a $: variable.
> $: << "/directory/to/the/required/rb/file" > require "some_file"
fuente