Ruby: come caricare un file nella console interattiva ruby ​​(IRB)?


84

Sto usando IRB (console ruby ​​interattiva) per imparare a programmare con Ruby. Come faccio a caricare un file nella console se scrivo prima i miei programmi in un editor di testo?


È [questo] [1] ciò che vuoi ottenere? [1]: stackoverflow.com/a/2652558/919641
pjam

1
fonte ("nomefile.rb")
Assad Ebrahim

Risposte:


86

Se è necessario caricare solo un file in IRB, è possibile richiamarlo con irb -r ./your_file.rbse si trova nella stessa directory.

Ciò richiede automaticamente il file e ti consente di lavorarci immediatamente.


2
Se vuoi aggiungere più del semplice -r tra ogni file, beh è quello che faccio e funziona. È il modo in cui carico tutti i miei file in irb in modo da poter accedere a tutte le cose della mia app all'interno di irb, ovviamente uso uno script rake per caricare il file di avvio in irb in modo che io possa semplicemente rake irbe fa tutto per me.
Thermatix

questo è stato il mio primo tentativo dopo aver letto man, ma io uso -r some_file.rb, 30 minuti dopo ho trovato questo e ho aggiunto ./, grazie xd
Alexis

In Ubuntu 16.04, rimuovo il punto:irb -r /foo/foo.rb
noobninja

Questo non dà accesso alle variabili dal file.
Radon Rosborough

49

Utilizzando ruby ​​1.9.3 su Ubuntu 14.04, sono in grado di caricare i file dalla directory corrente irbcon la seguente riga di comando:

irb -I . -r foo.rb

dov'è foo.rbil file che voglio caricare dalla mia directory corrente. L' -Iopzione è necessaria per aggiungere la directory corrente ( .) al percorso di caricamento di ruby, come spiegato nella pagina man di ruby. Ciò rende possibile i requirefile dalla directory corrente, che è ciò che l' -ropzione per irbrealizzare.

Il punto chiave che non era ovvio per me quando ho avuto questo problema è l' -Iopzione. Dopo averlo fatto, puoi chiamare require 'foo.rb'dall'interno irbper qualsiasi file nella directory corrente. E, naturalmente, puoi specificare qualsiasi directory desideri, non solo .con l' -Iopzione. Per includere più directory nel percorso di caricamento, separale con due punti (:), ad esempio:

irb -I foo/:bar/:baz/

Questo comando aggiungerà le directory foo, bare bazal percorso di carico di Ruby.

L'ultima alternativa è utilizzare il percorso relativo o assoluto del file quando si utilizza requireo -rper caricare un file:

irb -r ./foo.rb

o dall'interno irb:

> require './foo.rb'

Il risultato della tua soluzione è lo stesso di chiamare "ruby foo.rb", ma almeno vedi cosa sta succedendo. Ma voglio lasciare la console aperta, così posso eseguire altri comandi. Qualche idea?
Paul Verschoor

33

Digitare irb

E poi

require './ruby_file.rb'

Questo presuppone che ruby_file.rb sia nella stessa directory. Regola di conseguenza.


4
Puoi anche usare require_relative. Ad esempio, require "./lib/foo"fa lo stesso direquire_relative "lib/foo"
Dennis

.rbè facoltativo, puoi scrivere require './ruby_file'. I checked in ruby 1.9.3p551`
MING

cosa fa il ./?
the12

1
@ the12 è un percorso relativo alla directory corrente
winklerrr

28

Due strade:

  1. per caricare il sorgente senza eseguire il programma - questo dà accesso a tutte le variabili e funzioni:

source("filename.rb")

  1. per eseguire il programma e poi entrare in modalità interattiva - questo dà solo accesso alle funzioni, non alle variabili:

require("filename.rb")


1
Questo sembra rispondere alla domanda, come ricaricare anche uno script. Stavo usando requireche non sembra ricaricare lo script (eventuali modifiche alla fonte originale non si riflettono nella tua sessione), mentre sourcesembra riflettere le modifiche allo script originale.
Michael Welch

4

Dipende dal tuo rubino. Ruby 1.8 include il percorso corrente, mentre Ruby 1.9 no. Valuta $:per determinare se il tuo percorso è incluso o meno. Quindi in ruby ​​1.9 devi usare l'intero percorso, che è sempre una scommessa sicura.

Quindi puoi usare requireo loadper includere il file.

requirenon richiede di aggiungere il suffisso del file quando si cerca di trovarlo e includerà il file solo una volta. requiredovrebbe essere utilizzato al posto della loadmaggior parte delle volte.

Controlla Aggiunta di una directory a $ LOAD_PATH (Ruby) se utilizzerai ruby ​​1.8


2

Digita i codici Ruby nell'editor di testo

Salvalo con l'estensione .rb (ad esempio: demo.rb ).

In Linux, apri il tuo terminale quindi cambia la directory nella posizione corrente di quel file (il comando cd viene utilizzato per cambiare directory).

Dopodiché, digita irb e il nome del tuo file (non dimenticare di includere la tua estensione (.rb)).

clicca qui per vedere il caricamento di un file ruby ​​usando irb

In quell'immagine, ho caricato un semplice file ruby ​​che stampa solo "ruby".


0

Un altro modo per caricare il percorso in irb è semplicemente digitare require, quindi trascinare e rilasciare il file nel terminale.🙂 -testato utilizzando Linux Mint.


Linux Mint. Scusa avrei dovuto aggiungerlo.
Mike Kennedy

0

Per coloro che vogliono caricare il file .rb da una directory diversa. Basta aggiungere un rappresentante di stringa della directory a $: variable.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.