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?

nbonbon
fuente
¿Es [esto] [1] lo que quieres lograr? [1]: stackoverflow.com/a/2652558/919641
pjam
1
fuente ("filename.rb")
Assad Ebrahim

Respuestas:

85

Si solo necesita cargar un archivo en IRB, puede invocarlo irb -r ./your_file.rbsi está en el mismo directorio.

Esto requiere automáticamente el archivo y le permite trabajar con él inmediatamente.

PhilG
fuente
2
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:

irb -r ./foo.rb

o desde dentro irb:

> require './foo.rb'
wachr
fuente
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.

okysabeni
fuente
4
También puede utilizar require_relative. Por ejemplo, require "./lib/foo"hace lo mismo querequire_relative "lib/foo"
Dennis
.rbes opcional, puede escribir require './ruby_file'. I checked in ruby 1.9.3p551`
AMIC MING
¿Qué hace el ./?
12 de
1
@ the12 es una ruta relativa al directorio actual
winklerrr
28

Dos caminos:

  1. para cargar la fuente sin ejecutar el programa, esto da acceso a todas las variables y funciones:

source("filename.rb")

  1. para ejecutar el programa y luego pasar al modo interactivo; esto solo da acceso a funciones, no a variables:

require("filename.rb")

Assad Ebrahim
fuente
1
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.

Consulte Agregar un directorio a $ LOAD_PATH (Ruby) si va a utilizar ruby ​​1.8

Miguel
fuente
2

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)).

haga clic aquí para ver cómo cargar un archivo ruby ​​usando irb

En esa imagen, cargué un archivo ruby ​​simple que solo imprime "ruby".

Vinoth
fuente
0

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.

Mike Kennedy
fuente
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.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
tagaísmo
fuente