Ruby: Wie lade ich eine Datei in die interaktive Ruby-Konsole (IRB)?
83
Ich benutze IRB (interaktive Ruby-Konsole), um zu lernen, wie man mit Ruby programmiert. Wie lade ich eine Datei in die Konsole, wenn ich meine Programme zuerst in einem Texteditor schreibe?
Wenn Sie mehr als nur -r zwischen jede Datei einfügen möchten, dann mache ich das und es funktioniert. Auf diese Weise lade ich alle meine Dateien in irb, damit ich auf alle Inhalte meiner App in irb zugreifen kann. Natürlich verwende ich ein Rake-Skript, um die Boot-Datei in irb zu laden, damit ich es einfach kann rake irbund es alles für mich erledigt.
Thermatix
Dies war mein erster Versuch nach dem Lesen von man, aber ich benutze -r some_file.rb, 30 Minuten später fand ich dies und fügte hinzu ./, danke xd
Alexis
In Ubuntu 16.04 entferne ich den Punkt:irb -r /foo/foo.rb
noobninja
Dies gibt keinen Zugriff auf Variablen aus der Datei.
Radon Rosborough
45
Mit Ruby 1.9.3 unter Ubuntu 14.04 kann ich Dateien aus dem aktuellen Verzeichnis irbmit der folgenden Befehlszeile laden :
irb -I .-r foo.rb
Wo foo.rbist die Datei, die ich aus meinem aktuellen Verzeichnis laden möchte? Die -IOption ist erforderlich, um das aktuelle Verzeichnis ( .) zum Ladepfad von Ruby hinzuzufügen , wie in der Ruby-Manpage erläutert. Dies ermöglicht das Abrufen von requireDateien aus dem aktuellen Verzeichnis. Dies ist die -rOption, irbdie ausgeführt werden soll.
Das Schlüsselstück, das mir bei diesem Problem nicht klar war, ist die -IOption. Sobald Sie dies getan haben, können Sie require 'foo.rb'von innen irbnach Dateien im aktuellen Verzeichnis suchen. Und natürlich können Sie jedes gewünschte Verzeichnis angeben, nicht nur .mit der -IOption. Um mehrere Verzeichnisse in den Ladepfad aufzunehmen, trennen Sie sie durch einen Doppelpunkt (:), z.
irb -I foo/:bar/:baz/
Dieser Befehl wird die Verzeichnisse hinzufügen foo, barund bazzu Rubys Lastpfad.
Die letzte Alternative besteht darin, den relativen oder absoluten Pfad zur Datei zu verwenden, wenn Sie eine Datei verwenden requireoder -rladen:
Das Ergebnis Ihrer Lösung ist das gleiche wie das Aufrufen von 'ruby foo.rb', aber zumindest sehen Sie, was los ist. Ich möchte die Konsole jedoch offen lassen, damit ich weitere Befehle ausführen kann. Irgendeine Idee?
Paul Verschoor
31
Eintippen irb
Und dann
require './ruby_file.rb'
Dies setzt voraus, dass sich ruby_file.rb im selben Verzeichnis befindet. Dementsprechend anpassen.
Dies scheint die Frage zu beantworten, wie auch ein Skript neu geladen werden kann. Ich habe verwendet, requiredas das Skript nicht neu zu laden scheint (Änderungen an der Originalquelle werden in Ihrer Sitzung nicht berücksichtigt), während sourceÄnderungen am Original-Skript angezeigt werden.
Michael Welch
4
Es hängt von deinem Rubin ab. Ruby 1.8 enthält Ihren aktuellen Pfad, Ruby 1.9 nicht. Bewerten Sie, $:um festzustellen, ob Ihr Pfad enthalten ist oder nicht. In Ruby 1.9 müssen Sie also den gesamten Pfad verwenden, was immer eine sichere Sache ist.
Dann können Sie die Datei verwenden requireoder loadeinschließen.
requireSie müssen das Suffix der Datei nicht hinzufügen, wenn Sie versuchen, sie zu finden, und die Datei wird nur einmal eingefügt. requiresollte anstelle der loadmeisten Zeit verwendet werden.
Speichern Sie es mit der Erweiterung .rb (zum Beispiel: demo.rb ).
Öffnen Sie unter Linux Ihr Terminal und wechseln Sie in das Verzeichnis an den aktuellen Speicherort dieser Datei (mit dem Befehl cd wird das Verzeichnis geändert).
Geben Sie danach irb und Ihren Dateinamen ein (vergessen Sie nicht, Ihre Erweiterung (.rb) anzugeben).
In diesem Bild habe ich eine einfache Ruby-Datei geladen, die nur "Ruby" druckt.
Eine andere Möglichkeit, den Pfad in irb zu laden, besteht darin, require einzugeben und die Datei per Drag & Drop in das Terminal zu ziehen. Using -getestet mit Linux Mint.
Linux Mint. Entschuldigung, ich hätte das hinzufügen sollen.
Mike Kennedy
0
Für diejenigen, die eine .rb-Datei aus dem anderen Verzeichnis laden möchten. Fügen Sie einfach einen String-Repräsentanten des Verzeichnisses zu $: variable hinzu.
Antworten:
Wenn Sie nur eine Datei in IRB laden müssen, können Sie sie aufrufen,
irb -r ./your_file.rb
wenn sie sich im selben Verzeichnis befindet.Dies erfordert automatisch die Datei und ermöglicht es Ihnen, sofort damit zu arbeiten.
quelle
rake irb
und es alles für mich erledigt.irb -r /foo/foo.rb
Mit Ruby 1.9.3 unter Ubuntu 14.04 kann ich Dateien aus dem aktuellen Verzeichnis
irb
mit der folgenden Befehlszeile laden :Wo
foo.rb
ist die Datei, die ich aus meinem aktuellen Verzeichnis laden möchte? Die-I
Option ist erforderlich, um das aktuelle Verzeichnis (.
) zum Ladepfad von Ruby hinzuzufügen , wie in der Ruby-Manpage erläutert. Dies ermöglicht das Abrufen vonrequire
Dateien aus dem aktuellen Verzeichnis. Dies ist die-r
Option,irb
die ausgeführt werden soll.Das Schlüsselstück, das mir bei diesem Problem nicht klar war, ist die
-I
Option. Sobald Sie dies getan haben, können Sierequire 'foo.rb'
von innenirb
nach Dateien im aktuellen Verzeichnis suchen. Und natürlich können Sie jedes gewünschte Verzeichnis angeben, nicht nur.
mit der-I
Option. Um mehrere Verzeichnisse in den Ladepfad aufzunehmen, trennen Sie sie durch einen Doppelpunkt (:), z.Dieser Befehl wird die Verzeichnisse hinzufügen
foo
,bar
undbaz
zu Rubys Lastpfad.Die letzte Alternative besteht darin, den relativen oder absoluten Pfad zur Datei zu verwenden, wenn Sie eine Datei verwenden
require
oder-r
laden:oder von innen
irb
:quelle
Eintippen
irb
Und dann
Dies setzt voraus, dass sich ruby_file.rb im selben Verzeichnis befindet. Dementsprechend anpassen.
quelle
require_relative
. ZBrequire "./lib/foo"
macht das gleiche wierequire_relative "lib/foo"
.rb
ist optional, können Sierequire './ruby_file'. I checked in
Ruby 1.9.3p551`Zwei Wege:
source("filename.rb")
require("filename.rb")
quelle
require
das das Skript nicht neu zu laden scheint (Änderungen an der Originalquelle werden in Ihrer Sitzung nicht berücksichtigt), währendsource
Änderungen am Original-Skript angezeigt werden.Es hängt von deinem Rubin ab. Ruby 1.8 enthält Ihren aktuellen Pfad, Ruby 1.9 nicht. Bewerten Sie,
$:
um festzustellen, ob Ihr Pfad enthalten ist oder nicht. In Ruby 1.9 müssen Sie also den gesamten Pfad verwenden, was immer eine sichere Sache ist.Dann können Sie die Datei verwenden
require
oderload
einschließen.require
Sie müssen das Suffix der Datei nicht hinzufügen, wenn Sie versuchen, sie zu finden, und die Datei wird nur einmal eingefügt.require
sollte anstelle derload
meisten Zeit verwendet werden.Check out Hinzufügen eines Verzeichnisses zu $ LOAD_PATH (Ruby), wenn Sie Ruby 1.8 verwenden möchten
quelle
Geben Sie die Ruby-Codes in den Texteditor ein
Speichern Sie es mit der Erweiterung .rb (zum Beispiel: demo.rb ).
Öffnen Sie unter Linux Ihr Terminal und wechseln Sie in das Verzeichnis an den aktuellen Speicherort dieser Datei (mit dem Befehl cd wird das Verzeichnis geändert).
Geben Sie danach irb und Ihren Dateinamen ein (vergessen Sie nicht, Ihre Erweiterung (.rb) anzugeben).
In diesem Bild habe ich eine einfache Ruby-Datei geladen, die nur "Ruby" druckt.
quelle
Eine andere Möglichkeit, den Pfad in irb zu laden, besteht darin, require einzugeben und die Datei per Drag & Drop in das Terminal zu ziehen. Using -getestet mit Linux Mint.
quelle
Für diejenigen, die eine .rb-Datei aus dem anderen Verzeichnis laden möchten. Fügen Sie einfach einen String-Repräsentanten des Verzeichnisses zu $: variable hinzu.
quelle