70 Stimmen

Wie kann ich ein Skript im IRB neu laden?

Ich schreibe ein Ruby-Skript für die Verwendung in der Rails-Umgebung, aber ich habe mich entschieden, es von irb aus auszuführen, weil das Neuladen der Rails-Konsole eine Qual sein kann. Jetzt ist die Wartezeit von irb aus viel kürzer, aber es stört mich, dass ich irb neu starten und das Skript jedes Mal anfordern muss, wenn ich eine Änderung vornehme. Gibt es eine einfachere Möglichkeit, ein Skript von irb aus neu zu laden?

Ich habe eine Methode in dieses Thema aber das gilt offenbar nur für gem-Dateien. Meine require-Anweisung sieht wie folgt aus

 require "#{File.expand_path(__FILE__)}/../lib/query"

EDIT: Nach dem Versuch load statt require Ich konnte es trotzdem nicht zum Laufen bringen. Ich kann diese Fehler nicht aufhalten.

ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/rails/hacknyc/(irb)/../lib/query.rb

115voto

Alex Wayne Punkte 160481

In irb, File.expand_path(__FILE__)} wird einfach zurückgegeben "#{path you ran irb from}/(irb)" . Dadurch wird ein Pfad erstellt, der eigentlich gar nicht existiert. Glücklicherweise sind alle Dateipfade relativ zu dem Ort, an dem Sie irb ausgeführt haben. Das bedeutet, alles was Sie brauchen ist:

load "lib/query.rb"

Wenn Sie die __FILE__ in einer tatsächlichen Datei, ist das in Ordnung, aber erwarten Sie nicht, dass es einen gültigen Pfad in irb erzeugt. Da es in irb überhaupt keine "Datei" gibt, kann es auch keinen gültigen Pfad zurückgeben.

Auch, __FILE__ funktioniert einwandfrei, wenn es in einer Datei verwendet wird, die über load oder require in irb geladen wird. Denn das ist irgendwie, was es für ist.

43voto

vonconrad Punkte 24867

Anstelle der Verwendung von require , versuchen load . Ersteres lädt eine Quelldatei nur einmal, während letzteres sie bei jedem Aufruf lädt.

3voto

pjammer Punkte 9217

Laut ce lien Sie müssen Ihre Datei laden und dürfen die Erweiterung nicht vergessen.

Hier ist eine ausgefeiltere Version, die auch unter dieser Link Nummer 2 die auch für Sie hilfreich sein könnten.

Vielleicht sollten Sie versuchen herauszufinden, warum Ihre Rails-Konsole nicht funktioniert.

1voto

lukad Punkte 16198

Ich denke load ist das, wonach Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X