So verwenden Sie IRB, um Ruby zu erkunden

Einführung

IRB, kurz für Interactive Ruby, ist eine schnelle Möglichkeit, die Programmiersprache Ruby zu erkunden und Code auszuprobieren, ohne eine Datei zu erstellen. IRB ist ein Read-Eval-Print Loop oder REPL, ein Tool, das von vielen modernen Programmiersprachen angeboten wird. Um es zu verwenden, starten Sie die ausführbare Datei "+ irb +" und geben an der Eingabeaufforderung Ihren Ruby-Code ein. IRB wertet den von Ihnen eingegebenen Code aus und zeigt die Ergebnisse an.

Mit IRB können Sie auf alle in Ruby integrierten Funktionen sowie auf alle von Ihnen installierten Bibliotheken oder Gems zugreifen. Außerdem können Sie IRB so konfigurieren, dass Ihr Befehlsverlauf gespeichert und sogar die automatische Vervollständigung Ihres Codes aktiviert wird.

In diesem Lernprogramm verwenden Sie IRB, um Code auszuführen, die Ausgabe zu überprüfen, externe Bibliotheken einzubinden und Ihre IRB-Sitzung anzupassen.

IRB starten und stoppen

Wenn Sie https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-ruby[Ruby installiert haben, ist IRB installiert . Sie können es auf jedem Computer starten, auf dem Ruby installiert ist, indem Sie den Befehl "+ irb +" über Ihre Befehlszeilenschnittstelle ausführen.

irb

Sie werden mit der IRB-Eingabeaufforderung begrüßt:

IRB sessionirb(main):001:0>

Die Eingabeaufforderung zeigt an, dass Sie IRB ausführen und dass alles, was Sie ausführen, im Kontext "+ main +" ausgeführt wird, dem Standardkontext auf oberster Ebene eines Ruby-Programms. Es zeigt auch eine Zeilennummer.

IRB akzeptiert die Ruby-Syntax, die Sie an der Eingabeaufforderung eingeben können. Probieren Sie es aus, indem Sie zwei Zahlen addieren:

2 + 2

Drücken Sie die + ENTER + Taste und IRB zeigt Ihnen das Ergebnis:

IRB session=> 4

Das Symbol "+ ⇒ +" zeigt an, dass dies der Rückgabewert des Ruby-Ausdrucks ist.

Um IRB zu beenden, geben Sie an der Eingabeaufforderung "+ exit " ein oder drücken Sie " CTRL + D +". Sie kehren zur Shell-Eingabeaufforderung zurück.

Lassen Sie uns etwas tiefer in IRB eintauchen, indem wir uns ansehen, wie Sie damit Code untersuchen können.

Ausführen von Code in einer IRB-Sitzung

IRB ist eine großartige Möglichkeit, Code auszuprobieren, um herauszufinden, ob es eine gute Lösung für Ihr Problem ist. Fast alles in Ruby gibt einen bestimmten Wert zurück. Jedes Mal, wenn Sie eine Anweisung in IRB ausführen, wird dieser Wert auf dem Bildschirm angezeigt.

Um dies zu demonstrieren, führen Sie diese Anweisung in einer neuen IRB-Sitzung aus:

puts "Hello World"

Wenn Sie die Taste "+ ENTER +" drücken, werden zwei Ergebnisse von IRB angezeigt:

OUTPUTHello World
=> nil

Das erste Ergebnis ist die Ausgabe der Methode + puts +, die den von Ihnen angegebenen String gefolgt von einem Zeilenumbruch ausgibt. Die Methode + puts + druckt den Text auf das Standardausgabegerät, das Ihr Bildschirm ist. Die Methode + puts + hat jedoch einen Rückgabewert, da jede Methode in Ruby einen Rückgabewert hat. Die Methode "+ puts " gibt " nil +" zurück, und das zeigt Ihnen IRB.

Jedes Mal, wenn Sie eine Anweisung ausführen, ändert sich die Eingabeaufforderung und zeigt eine neue Zeilennummer an:

irb(main):001:0> puts "Hello World"
Hello World
=> nil
irb(main):002:0>

Dies kann Ihnen beim Debuggen von Anweisungen bei komplexeren Ausdrücken in einer IRB-Sitzung helfen, da sich Fehlermeldungen auf Zeilennummern beziehen.

Sie können Variablen in einer IRB-Sitzung genau wie in Ihren eigenständigen Ruby-Programmen Werte zuweisen. Führen Sie diese Anweisung aus, indem Sie sie in Ihre IRB-Sitzung eingeben und die Eingabetaste drücken:

birth_year = 1868

Der Rückgabewert dieser Anweisung wird zurückgemeldet:

IRB session=> 1868

Die Variable + birth_year + enthält diesen Wert, aber da die meisten Anweisungen in Ruby Rückgabewerte enthalten, zeigt IRB auch hier den Rückgabewert an.

Fügen Sie zwei weitere Variablen hinzu. Erstellen Sie zunächst eine Variable mit dem Namen "+ death_year +":

death_year = 1921

Dann erstellen Sie die Variable "+ age_at_death ", indem Sie " birth_year " von " death_year +" subtrahieren:

age_at_death = death_year - birth_year

IRB weist der Variablen den Wert zu, zeigt Ihnen aber auch das Ergebnis:

IRB session=> 53

Wenn Sie sich in einer IRB-Sitzung befinden, müssen Sie keine explizite Anweisung "+ Puts " oder " Print +" verwenden, wenn Sie dies nicht möchten, da Ihre Rückgabewerte angezeigt werden.

Manchmal möchten Sie Code schreiben, der mehrere Zeilen umfasst. IRB unterstützt dies intuitiv. IRB führt nur Code aus, der syntaktisch vollständig ist. Der folgende Ruby-Code verwendet einen array von Haien und verwendet den https://www.digitalocean.com / community / tutorials / Array-Methoden in Ruby verwenden # Elemente finden und filtern [select] -Methode, um nur die Haie zurückzugeben, deren Name den Buchstaben „a“ enthält. Geben Sie diesen Code in Ihre IRB-Sitzung ein und drücken Sie nach jeder Zeile die Eingabetaste:

["Tiger", "Great White", "Angel"].select do |shark|
  shark.include?("a")
end

Mit IRB können Sie mehrere Codezeilen eingeben, der Code wird jedoch nur ausgeführt, wenn er für syntaktisch vollständig gehalten wird. Beachten Sie, dass sich die Eingabeaufforderung ändert, um anzuzeigen, dass IRB Ihren Code noch nicht bewertet, indem Sie ein Sternchen (+ * +) verwenden und die endgültige Null in eine Eins ändern, um einen anderen Bereich anzugeben:

IRB sessionirb(main):005:0> ["Tiger", "Great White", "Angel"].select do |shark|
irb(main):006:    shark.include?("a")
irb(main):007:> end

Da die erste Zeile das Schlüsselwort "+ do " enthält, versucht IRB erst, etwas auszuführen, wenn es auf das Schlüsselwort " end +" stößt. Dann zeigt es das Ergebnis an:

IRB session=> ["Great White"]

Mit IRB können Sie Code-Teile testen, um zu sehen, wie sie funktionieren, bevor Sie sie in Ihre eigenen Programme integrieren. Sie können IRB auch zum Arbeiten mit externen Bibliotheken verwenden.

Bibliotheken und Gems verwenden

Sie können Bibliotheken mit der Anweisung + require + in Ihre IRB-Sitzung importieren, genau wie Sie es in einem Ruby-Programm tun würden. Diese Bibliotheken können Dinge sein, die in Rubys Standardbibliothek enthalten sind, Dinge, die Sie selbst geschrieben haben, oder gems, Ruby-Bibliotheken, die über http://rubygems.org [Rubygems.org] verteilt werden und die Sie mit dem Befehl "+ gem +" installieren.

Die Ruby-Standardbibliothek enthält Module zum Erstellen von Webanforderungen und zum Abrufen der Ergebnisse. Sie können diese in Ihrer IRB-Sitzung genauso verwenden wie in einem Ruby-Programm.

Verwenden Sie die + require + -Anweisung, um Net/HTTP aus Rubys Standardbibliothek zu importieren. Geben Sie die folgende Codezeile in Ihre IRB-Sitzung ein und drücken Sie + ENTER +:

require 'net/http'

IRB gibt an, dass diese Anweisung "+ true " zurückgibt, was besagt, dass die Bibliothek erfolgreich geladen wurde. Geben Sie nun diesen Code in das IRB ein, um eine Anfrage an " icanhazip.com +" zu senden und Ihre externe IP-Adresse abzurufen:

uri = URI.parse("http://icanhazip.com")
response = Net::HTTP.get_response uri
response.body

Während Sie jede Zeile eingeben, zeigt IRB den Rückgabewert an, sodass Sie jeden Schritt debuggen können:

IRB sessionirb(main):010:0> uri = URI.parse("http://icanhazip.com")
=>
irb(main):011:0> response = Net::HTTP.get_response uri
=>
irb(main):012:0> response.body
=>

Wenn eine Bibliothek nicht gefunden werden konnte, wird eine andere Antwort angezeigt. Versuchen Sie, die Bibliothek HTTParty zu importieren, wodurch die Arbeit mit HTTP-Anforderungen etwas vereinfacht wird:

require 'httparty'

Sie sehen diese Nachricht:

IRB sessionLoadError: cannot load such file -- httparty

Diese Meldung weist Sie darauf hin, dass die gewünschte Bibliothek nicht verfügbar ist. HTTParty wird als Juwel verteilt, daher müssen wir es installieren. Verlassen Sie Ihre IRB-Sitzung mit + CTRL + D + oder geben Sie + exit + ein, um zu Ihrer Eingabeaufforderung zurückzukehren. Verwenden Sie dann den Befehl + gem +, um das Juwel + httparty + zu installieren:

gem install httparty

Starten Sie nun + irb + erneut.

irb

Laden Sie das Modul erneut. Geben Sie in Ihrer IRB-Sitzung diesen Code ein:

require 'httparty`

Dieses Mal zeigt IRB "+ true +" an, um Sie darüber zu informieren, dass die Bibliothek geladen werden konnte. Gib diesen Code in das IRB ein, um es auszuprobieren:

response = HTTParty.get("http://icanhazip.com")
response.body

Sie sehen die Ausgabe auf dem Bildschirm:

IRB session=>

Schauen wir uns nun an, wie Sie Ihren eigenen Ruby-Code mit IRB untersuchen und testen.

Laden Sie Ihren Code in IRB

Wenn Sie eine IRB-Sitzung starten und den Schalter "+ -r " verwenden, können Sie Bibliotheken oder Gems angeben, die beim Start von IRB geladen werden sollen. Zum Beispiel würde " irb -r httparty " eine IRB-Sitzung mit dem bereits geladenen Gem " httparty " starten, was bedeutet, dass Sie die explizite Anweisung " require httparty +" überspringen können.

Sie können damit jedoch auch Ihren eigenen Code in eine neue Sitzung laden. Dies ist hilfreich, wenn Sie ihn untersuchen oder ausprobieren möchten.

Beenden Sie Ihre IRB-Sitzung, indem Sie "+ exit " eingeben oder " CTRL + D +" drücken.

Erstellen Sie eine neue Ruby-Datei mit dem Namen "+ ip_grabber.rb ", die ein " IPGrabber " -Objekt mit einer " get " -Methode definiert, die bei Angabe einer URL die externe IP-Adresse des Computers zurückgibt. Wir werden die HTTParty-Bibliothek verwenden, um die Antwort von " icanhazip.com " abzurufen. Wir würden dieses " IPGrabber +" - Objekt in unserem eigenen Programm verwenden, um unseren Code vor externen Änderungen zu schützen. Durch die Verwendung unseres Objekts können wir die zugrunde liegende Bibliothek und die Site, die wir zum Auflösen der IP-Adresse verwenden, austauschen, ohne die Funktionsweise des restlichen Codes ändern zu müssen.

Fügen Sie diesen Code zur Datei hinzu, um die Klasse zu definieren:

ip_grabber.rb

require 'httparty'
class IPGrabber

 def initialize()
   @url = "http://icanhazip.com"
 end

 def get
   response = HTTParty.get(@url)
   response.body.chomp  # remove the \n if it exists
 end
end

Speichern Sie die Datei und beenden Sie den Editor.

Starten Sie dann IRB und laden Sie diese Datei. Da es sich nicht um ein Juwel oder eine integrierte Bibliothek, sondern um eine lokale Datei handelt, müssen wir einen Pfad angeben. Die Erweiterung "+ .rb +" der Datei muss nicht angegeben werden.

irb -r ./ip_grabber

Die IRB-Sitzung wird geladen, und Sie können dieses neue Objekt in Ihrer Sitzung folgendermaßen verwenden:

ip = IPGrabber.new
ip.get

Sie sehen diese Ausgabe:

IRB session=>

Wenn Sie Ihren eigenen Code in eine IRB-Sitzung laden, können Sie den Code überprüfen und mit Ihren eigenen Bibliotheken arbeiten, bevor Sie sie in ein vollständiges Programm integrieren.

Nachdem Sie nun wissen, wie Sie mit Code in einer IRB-Sitzung arbeiten, schauen wir uns an, wie Sie Ihre IRB-Sitzung anpassen.

Anpassen von IRB

Sie können eine Konfigurationsdatei mit dem Namen "+ .irbrc +" erstellen, mit der Sie Ihre IRB-Sitzung anpassen können. Anschließend können Sie Unterstützung für die automatische Vervollständigung, Einrückung und den Befehlsverlauf hinzufügen.

Erstellen Sie diese Datei in Ihrem Home-Verzeichnis:

nano ~/.irbrc

Konfigurieren Sie zunächst die Autovervollständigungsunterstützung in IRB. Hiermit können Sie die Taste "+ TAB +" verwenden, um Objekt-, Variablennamen und Methodennamen in IRB automatisch zu vervollständigen:

~ / .irbrc

require 'irb/completion'

Fügen Sie als Nächstes Unterstützung für das Speichern Ihres Befehlsverlaufs in einer externen Datei hinzu.

~ / .irbrc

IRB.conf[:SAVE_HISTORY] = 1000

Wenn diese Option aktiviert ist, werden die letzten 1000 von Ihnen eingegebenen Anweisungen in der Datei "+ .irb_history +" in Ihrem Ausgangsverzeichnis protokolliert.

Wenn Sie eine neue IRB-Sitzung eröffnen, wird Ihr Verlauf automatisch geladen, und Sie können die Pfeiltasten "+ Nach oben" und "+ Nach unten" verwenden, um durch diese Einträge zu navigieren, oder "+ STRG + R +" verwenden, um einen Vorgang auszuführen Rückwärtssuche, genau wie in einer Bash-Shell.

Wenn Sie eine andere Verlaufsdatei angeben möchten, fügen Sie diese zu Ihrer Konfigurationsdatei hinzu:

~ / .irbrc

IRB.conf[:HISTORY_FILE] = '~/'

Fügen Sie als Nächstes diese Zeile zu Ihrer Konfigurationsdatei hinzu, um das automatische Einrücken zu aktivieren. Dies ist praktisch, wenn Sie Klassen, Methoden und Blöcke schreiben:

~ / .irbrc

IRB.conf[:AUTO_INDENT] = true

Ihre Konfigurationsdatei kann jeden weiteren gültigen Ruby-Code enthalten. Dies bedeutet, dass Sie Hilfsmethoden definieren oder "+ require " verwenden können, um weitere Bibliotheken zu laden. Um Ihrer IRB-Sitzung beispielsweise einen " history " - Helfer hinzuzufügen, der Ihren Verlauf anzeigt, fügen Sie diesen Code zu " .irbrc +" hinzu:

irbrc
def history
 history_array = Readline::HISTORY.to_a
 print history_array.join("\n")
end

Wenn Sie Ihre IRB-Sitzung laden, geben Sie "+ history " ein, um Ihren IRB-Verlauf anzuzeigen. Möglicherweise haben Sie einiges zu tun, also können Sie den Befehl " history " so ändern, dass eine optionale Anzahl von Zeilen zum Anzeigen erforderlich ist. Ersetzen Sie den Code für die Funktion " history " durch diesen Code, der ein optionales Argument mit dem Namen " count +" verwendet, um die angezeigten Einträge einzuschränken:

irbrc
# history command
def history(count = 0)

 # Get history into an array
 history_array = Readline::HISTORY.to_a

 # if count is > 0 we'll use it.
 # otherwise set it to 0
 count = count > 0 ? count : 0

 if count > 0
   from = hist.length - count
   history_array = history_array[from..-1]
 end

 print history_array.join("\n")
end

Speichern Sie die Datei und starten Sie eine neue IRB-Sitzung. Geben Sie dann "+ history 2 +" ein und Sie sehen nur die letzten beiden Zeilen Ihres Verlaufs.

Sie können zum Laden häufig verwendeter Bibliotheken auch "+ .irbrc " verwenden. Beachten Sie jedoch, dass jede von Ihnen geladene Bibliothek die Ladezeit der IRB-Sitzung verlängert, wodurch die Verwendung möglicherweise weniger angenehm wird. Oft ist es besser, bestimmte Bibliotheken manuell mit " require" -Anweisungen zu laden.

Fazit

IRB bietet einen Ort zum Experimentieren mit Ruby-Code. Es ist eine großartige Möglichkeit, die Programmlogik zu erarbeiten, bevor Sie sie in eine Datei einfügen.

Nachdem Sie mit IRB vertraut sind, können Sie es verwenden, um die verschiedenen Datentypen von Ruby zu untersuchen. Befolgen Sie dazu diese Tutorials und verwenden Sie IRB, um die Beispiele auszuführen.