Als ich das erste Mal von Ruby Gems erfuhr, erschienen sie mir ziemlich magisch. Indem ich bundle install
ausführte, konnte ich irgendwie diese magischen Edelsteine erwerben, die meinen Code alle möglichen Dinge tun ließen, die weit über meine Fähigkeiten als Flatiron-Student der ersten Woche hinausgingen. Ähnlich wie die „Item-Boxen“ in Mario Kart scheinen Edelsteine dem Benutzer Superkräfte zu verleihen.
Ich beabsichtige, meinen Blog zu nutzen, um tiefer in Programmierkonzepte einzutauchen, die meine Neugier wecken und die ich nicht ganz verstehe. In meinem ersten Blogbeitrag werde ich die mystische, magische Natur von Ruby-Gems entlarven.
Was ist ein Ruby-Gem?
Nein, Ruby-Gems sind nicht magisch. Sie sind einfach Open-Source-Bibliotheken, die Ruby-Code enthalten und mit ein paar zusätzlichen Daten verpackt sind. Die Verwendung eines Gems ermöglicht es einem Programmierer, den Code des Gems in seinem eigenen Programm zu verwenden, ohne diesen Code explizit einfügen zu müssen.
Gems können für alle möglichen Zwecke verwendet werden, und Sie können verschiedene Gems unter https://rubygems.org/ erkunden. Um eine bessere Vorstellung davon zu bekommen, was Gems tun können, sind hier ein paar beliebte Gems und ihre Funktionen:
- Bundler – Bietet eine konsistente Umgebung für Ruby-Projekte, indem es genau die Gems und Versionen aufspürt und installiert, die benötigt werden. Es ist das am häufigsten heruntergeladene Gem aller Zeiten, aber mehr zu Bundler später.
- RSpec – Ein Test-Framework, das Behavior Driven Development für Ruby unterstützt.
- Devise – Devise arbeitet mit Authentifizierung. Für jede Website, die Benutzer-Logins benötigt, handhabt Devise die Anmeldung, das Anmelden, das Zurücksetzen des Passworts usw.
- JSON – Bietet eine API zum Parsen von JSON aus Text.
- Nokogiri – Bietet HTML-, XML-, SAX- und Reader-Parser mit XPath- und CSS-Selektor-Unterstützung.
- Rails – Rails ist ein Juwel! Rails bietet das Fullstack-Framework, mit dem Ruby in Webanwendungen umgewandelt werden kann.
Installation von Gems
Heute ist die Verwendung von Gems einfach! Die lokale Installation von Gems ist so einfach wie ein einziger Befehl: gem install
. Der Installationsbefehl holt den Code, lädt ihn auf Ihren Computer herunter und installiert den Edelstein und alle notwendigen Abhängigkeiten. Schließlich wird die Dokumentation für die installierten Edelsteine erstellt.
Während einige Edelsteine, wie Bundler, nur die Installation eines Edelsteins erfordern, haben andere Edelsteine Abhängigkeiten, die die Installation mehrerer Edelsteine erfordern:
Um alle lokal installierten Gems anzuzeigen, verwenden Sie den Befehl gem list
.
Die Verwendung von Edelsteinen
Wie können wir nun unsere installierten Edelsteine verwenden? Nun, das hängt von der Art der Gems ab. Einige Gems, wie z.B. Rails, sind eigenständige Ruby-Programme, die man von der Kommandozeile aus starten kann.
Andere sind für sich genommen relativ nutzlos, aber unglaublich hilfreich, wenn sie innerhalb eines Projekts verwendet werden. Um einen Edelstein in Ihrem Code zu verwenden, müssen Sie ihn zuerst am Anfang der Datei anfordern – require 'gem_name'
. Pry zum Beispiel ist schnell zu einem meiner Lieblingsgems bei der Arbeit an Projekten geworden. Mein Code i̶s̶n̶’̶t̶ ̶a̶l̶w̶a̶y̶s̶ ist fast nie korrekt, wenn ich ihn zum ersten Mal schreibe, und Pry macht die Fehlersuche viel effizienter und etwas weniger schmerzhaft. In der letzten Woche haben wir etwas über APIs gelernt und brauchten Pry und ein paar andere Gems, um das Projekt zu vervollständigen.
Während Gems sehr einfach sind, wenn man sie nur auf seinem Computer braucht, wird es etwas komplizierter, wenn man sein Projekt verteilen oder veröffentlichen will. Jeder andere, der Ihr Projekt ausführt, muss alle notwendigen Gems und die richtigen Versionen auf seinem Computer installiert haben. Zum Glück gibt es RubyGems und Bundler, die diesen Prozess vereinfachen.
RubyGems ist das Framework, das die gemeinsame Nutzung von Gems vereinfacht
Teil der Magie von Gems ist, dass wir sie alle nutzen können, und RubyGems ist der Paketmanager, der das möglich macht. Er bietet ein Standardformat für die Verteilung von Ruby-Gems, verwaltet die Installation von Gems und stellt einen Server für deren Verteilung bereit. RubyGems wurde erst am 14. März 2004 (Pi-Tag! π) der Öffentlichkeit zugänglich gemacht. Obwohl RubyGems seit Ruby 1.8 existiert, war es bis Ruby 1.9 nicht Teil der Standard-Ruby-Distribution. Für Ruby-Neulinge, wie mich, wird RubyGems also automatisch auf dem Computer installiert, wenn man Ruby installiert.
Wie konnten Rubyisten jemals ohne RubyGems leben?
Das Leben war viel schwieriger. Wenn ihr die ganze Geschichte hören wollt, empfehle ich euch André Arkos Präsentation „How does Bundler work, anyway?“ von der RailsConf 2015. Hier ist meine zusammengefasste Version: