Ich benutze Ruby-Gems seit ein paar Wochen und es ist großartig, aber ich war mir nicht wirklich sicher, was unter der Haube passiert, wenn ich einen zu meiner Anwendung hinzufüge. Dieser Blog-Beitrag soll mir helfen zu verstehen, wie Gems funktionieren, und hoffentlich auch Ihnen helfen.
Ein Ruby-Gem ist gepackter Ruby-Code, den Sie in Ihre Anwendung einfügen können. Dadurch kann man etwas Zeit sparen, indem man Code verwendet, den andere geschrieben haben, um ähnliche Probleme zu lösen. Wenn Sie zum Beispiel die Farbe eines Textes ändern wollen, können Sie das Gem colorize installieren und verwenden. Sie erhalten die gesamte Funktionalität, ohne den Code jemals selbst schreiben zu müssen.
Sinatra ist ein Gem, Rack ist ein Gem, und ich war überrascht zu erfahren, dass sogar Rails ein Gem ist. Alle öffentlichen Gems werden über RubyGems.org veröffentlicht. Hier können Menschen dazu beitragen und sie mit der Gemeinschaft teilen.
Beginnen wir mit der Installation eines Gems
Wählen Sie ein Gem und installieren Sie es. Ich habe mich entschieden, das Gem colorize zu meiner Anwendung hinzuzufügen, das die Farbe eines übergebenen Strings ändert. Sie können gem install gem_name ausführen, um den Edelstein auf Ihren Computer herunterzuladen und ihn für Ihre Anwendungen verfügbar zu machen. Sie fragen sich, wo dieses Gem nach der Installation bleibt? Du kannst gem which gem_name ausführen und es wird dir genau sagen, wo es ist.
Um das Gem in unserem Code zu verwenden, musst du das Gem am Anfang deiner Datei mit require ‘gem_name’ anfordern. Wir tun dies, damit wir Zugriff auf den Edelstein haben und nicht unseren eigenen Code schreiben müssen, um den Text einzufärben.
Nun, da Sie den Edelstein installiert und benötigt haben, können Sie ihn verwenden. Wenn Sie das GitHub-Repositorium des Edelsteins besuchen, finden Sie dort in der Regel wichtige Informationen über seine Funktionen und deren Verwendung.
Gut! Sieht das nicht schön aus? Wir haben also unser Gem installiert und es scheint zu funktionieren, aber was ist, wenn wir eine größere Anwendung haben, die viele Gems benötigt? Der Aufruf von gem install und die Anforderung jedes einzelnen Edelsteins scheint eine Menge Arbeit zu sein. Sicherlich gibt es einen einfacheren Weg.
Bundler
Bundler macht unser Leben viel einfacher. Was ist Bundler? Nun, es ist natürlich ein Edelstein! Er verfolgt jeden Edelstein und installiert genau den Edelstein und die Version, die Sie in Ihrer Anwendung verwenden müssen. Um Bundler zu benutzen, brauchst du ein Gemfile im Verzeichnis deines Projekts und darin kannst du so viele Gems auflisten, wie du möchtest. Um das zu tun, öffnen Sie einfach das Gemfile und fügen Sie gem ‘gem_name’ hinzu.
Nachdem Sie es zu Ihrem Gemfile hinzugefügt haben, stellen Sie sicher, dass Sie bundle install in Ihrem Terminal ausführen. Dadurch werden alle Gems, die in Ihrer Gemfile aufgelistet sind, zusammen mit ihren Abhängigkeiten installiert. Das macht die Sache natürlich viel einfacher. Das Tolle ist, dass Ruby 2.6 und höher Bundler automatisch enthält, so dass du es nicht selbst installieren musst.
Es scheint, dass wir immer noch require ‘gem_file’ am Anfang unserer Dateien hinzufügen müssen, und das scheint auch eine Menge Arbeit zu sein, wenn wir viele davon haben. Es stellt sich heraus, dass Bundler auch daran gedacht hat. Sie können require ‘bundler’ an den Anfang Ihrer .rb-Datei setzen und Bunlder.require(:default) schreiben. Unter der Haube ruft dies require ‘gem_name’ für jeden Edelstein auf, den Sie in Ihrer gemfile haben.
Wenn Sie bundle install ausgeführt haben, werden Sie vielleicht feststellen, dass viele Edelsteine, die Sie nicht hinzugefügt haben, installiert werden. Warum ist das so? Viele Gems erfordern, dass andere Gems mit installiert werden. Zum Beispiel benötigt Rails viele andere Edelsteine und diese wiederum andere Edelsteine und so weiter. Bundler stellt sicher, dass alle installierten Gem-Versionen miteinander kompatibel sind.
Nachdem die korrekten Versionen der einzelnen Gems gefunden wurden, werden diese Versionen in einer anderen Datei namens Gemfile.lock gespeichert. Dadurch ist es möglich, die exakt gleiche Version auf jedem Rechner zu installieren, auf dem die Anwendung laufen soll.
Sie können in meiner Gemfile.lock sehen, dass lolize den paint gem benötigt und die Versionen, die es verwenden kann. Also wird Bundler diesen und die richtige Version für uns holen. Ist das nicht hilfreich? Danke Bundler!
So, das war’s! Ich hoffe, das hat Ihnen geholfen, die Grundlagen von Gems und Bundler zu verstehen. Es gibt viele Gems da draußen, die du verwenden kannst und du kannst hier nach ihnen suchen. https://rubygems.org/.