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?
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?
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.
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 :
irb -I . -r foo.rb
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 von require
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 Sie require 'foo.rb'
von innen irb
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.
irb -I foo/:bar/:baz/
Dieser Befehl wird die Verzeichnisse hinzufügen foo
, bar
und baz
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:
irb -r ./foo.rb
oder von innen irb
:
> require './foo.rb'
Eintippen irb
Und dann
require './ruby_file.rb'
Dies setzt voraus, dass sich ruby_file.rb im selben Verzeichnis befindet. Dementsprechend anpassen.
require_relative
. ZB require "./lib/foo"
macht das gleiche wierequire_relative "lib/foo"
.rb
ist optional, können Sie require './ruby_file'. I checked in
Ruby 1.9.3p551`
Zwei Wege:
source("filename.rb")
require("filename.rb")
require
das 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.
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
oder load
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 der load
meisten Zeit verwendet werden.
Check out Hinzufügen eines Verzeichnisses zu $ LOAD_PATH (Ruby), wenn Sie Ruby 1.8 verwenden möchten
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.
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.