GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Gewusst wie:Verwenden von Bundler zum Verwalten von Ruby Gems

Einführung

Wenn Ruby-Anwendungen wachsen, kann die Anzahl der externen Bibliotheken, die diese Anwendungen verwenden, mit der gleichen Geschwindigkeit wachsen – wenn nicht sogar schneller, in einigen Fällen. Dieses Wachstum kann Probleme aufwerfen, wenn Gems ihre Abhängigkeiten installieren. Wenn zwei Gems auf unterschiedliche Versionen derselben Bibliothek angewiesen sind, besteht bei der Installation beider Gems das Risiko, dass aufgrund von Gem-Inkompatibilitäten ein Fehlerszenario entsteht. Bundler, ein Ruby-Gem, bietet Ihnen eine einfache Möglichkeit, diese Gems zu verwalten und Konflikte zu vermeiden, sodass Sie sich auf den Code Ihrer Anwendung konzentrieren können, anstatt Probleme mit Support-Bibliotheken zu beheben.

Voraussetzungen

  • Ruby-Version – 2.2.1 oder neuer

Hinweis:Dieser Artikel verwendet vim für die Textbearbeitung. Ersetzen Sie „vim“ durch den Editor Ihrer Wahl, wenn Sie lieber ein anderes Textbearbeitungstool verwenden möchten. (Und wenn Sie versehentlich in vim stecken bleiben, finden Sie hier einige Tipps, die Ihnen dabei helfen, sich zu befreien.)

.

Verwalten komplexer Abhängigkeiten

Wenn Ihre Anwendung komplexer wird, sehen Sie möglicherweise Versionskonflikte im Gemset Ihrer Anwendung. Diese Konflikte können verhindern, dass Ihre Anwendung ordnungsgemäß funktioniert, wenn die Anzahl der von Ihnen verwendeten Gems – und die Anzahl der gegenseitigen Abhängigkeiten von Gems – wächst. Sie könnten in Betracht ziehen, RVM restriktiver zu verwenden, aber diese Lösung gibt Ihnen nur die Möglichkeit, die aktuelle Ruby-Version und das zugehörige Gemset zu steuern – sie behandelt keine Gem-Abhängigkeitsprobleme, die zwischen verschiedenen Gem-Versionen auftreten können, die dieselbe Basisversion von verwenden die Ruby-Sprache. Das Durchsuchen der Abhängigkeiten aller Gems, um diese Konflikte zu finden und kompatible Gem-Versionen herunterzuladen, ist ein langer und mühsamer Prozess. Glücklicherweise können wir den Bundler-Gem verwenden, um unsere Gemsets zu verwalten und das Rätselraten bei der Verwendung gemeinsam genutzter Bibliotheken zu beseitigen.
.

Installieren von Bundler zum Verwalten von Gems

Um mit Bundler zu beginnen, müssen wir zuerst das Juwel installieren:

gem install bundler

Beachten Sie, dass einige Versionen von Ruby möglicherweise die Form gem2.2 install bundler verwenden .

Dieser Befehl installiert Bundler in der aktuellen Ruby-Ausführungsumgebung. Als Nächstes müssen Sie eine Gemfile erstellen, um die Gems Ihrer Anwendung zu verwalten. Fügen Sie eine neue Datei im Stammverzeichnis Ihrer Anwendung hinzu und öffnen Sie sie zum Bearbeiten:

vim Gemfile

Hinweis:Bundler sucht standardmäßig nach dem Dateinamen Gemfile , genau wie gezeigt groß geschrieben. Es wird beispielsweise fehlschlagen, wenn Sie Ihre Datei stattdessen gemfile genannt haben .

Sie können Ihre Gems an dieser Stelle hinzufügen oder die Datei leer lassen, wenn Sie keine externen Gem-Abhängigkeiten haben. Bundler verwendet diese Gemfile beim Herunterladen und Installieren von Gems für Ihre Anwendung.
.

Anatomie einer Gemfile

Ein Gemfile bietet Ihnen viele verschiedene Möglichkeiten, die Gem-Sets Ihrer Anwendung zu verwalten. Sie können beispielsweise eine neue Gem-Quelle in Ihrem Gemfile angeben, die beim Ausführen der Installation durchsucht wird:

source 'https://rubygems.org'

Sie können ganz einfach neue Gem-Abhängigkeiten hinzufügen, indem Sie sie in einzelne Zeilen einfügen, denen das Wort gem vorangestellt ist . Die folgende Zeile gibt beispielsweise nokogiri an als Gem-Abhängigkeit für Ihre Anwendung:

gem 'nokogiri'

Sie können auch bestimmte Gem-Versionen angeben, indem Sie die vertraute RubyGems-Syntax verwenden. Die folgende Zeile fügt das Rails-Gem hinzu, beschränkt es aber auf die Rails-Version 3.0.0.beta3:

gem 'rails', '3.0.0.beta3'

Sie können auch gem-Gruppen angeben, die nur in bestimmten Umgebungen ausgeführt werden. Beispielsweise installiert der folgende Block rspec , guard , und factory_girl wenn die Rails-Umgebung entweder test ist oder development :

group :test, :development do
    gem 'rspec'
    gem 'guard'
    gem 'factory_girl'
end

Diese Beispiele sind nur ein Anfang. Unter bundler.io.
.

gibt es eine Reihe weiterer nützlicher Funktionen eines Gemfiles

Installation aller Gems mit Bundler

Sobald Sie Ihre Gemfile mit zu installierenden Gems gefüllt haben, können Sie alle Gems Ihrer aktuellen Umgebung mit dem folgenden Befehl installieren:

bundle install

Dieser Befehl analysiert Ihre Gemfile und spürt alle angezeigten Gems aus den Quellen auf, die sowohl auf Ihrem System als auch in der Gemfile selbst verfügbar sind. Es untersucht alle Gems auf gemeinsame Abhängigkeiten und generiert dann eine neue Datei (Gemfile.lock ), die alle kompatiblen Gems und ihre Versionen enthält. Schließlich bewegt es sich durch die erstellte Gemfile.lock Datei und installiert jedes relevante gem. Nach Abschluss stehen die Edelsteine ​​Ihrer Anwendung zur Verwendung in Ihrem Anwendungscode zur Verfügung.
.

Weitere nützliche Bundler-Befehle

Abgesehen davon, dass Bundler Ihnen alle Kopfschmerzen bei der Verwaltung von Gems mit gemeinsamen Abhängigkeiten nimmt, bietet Ihnen Bundler auch mehrere andere Tools, mit denen Sie den Gem-Satz Ihrer Anwendung verwalten können. Unten sind ein paar Beispielbefehle, die Sie während der Entwicklung nützlich finden könnten:

So aktualisieren Sie alle Gems in der Gemfile auf die neueste kompatible Version:

bundle update

In Produktionsumgebungen möchten Sie möglicherweise nur die in Gemfile.lock.

angegebenen Gems installieren, anstatt Gems aus allen verfügbaren Quellen dynamisch aufzulösen
bundle install --deployment

So führen Sie einen Befehl im Kontext der Gemfile einer Anwendung aus:

bundle exec XXXX

Ohne die Hinzufügung von bundle exec , würde der Befehl XXXX im System-Ruby-Kontext ausgeführt, der möglicherweise inkompatible Gems enthält.

Sie können andere verfügbare Befehle und deren Verwendungszweck hier einsehen.
.

Schlussfolgerung

Ein häufiges Problem unter Programmiersprachen ist das Konzept der „Abhängigkeitshölle“, die entsteht, wenn zwei oder mehr Bibliotheken von Drittanbietern auf unterschiedliche Versionen derselben gemeinsam genutzten Bibliothek angewiesen sind. Bundler bietet Ruby-Entwicklern ein benutzerfreundliches Tool zum Installieren und Verwalten komplexer Gem-Sets. Es hilft bei der Lösung aller Abhängigkeitsprobleme und bietet Ihnen einen Kompatibilitätsdatensatz für alle Abhängigkeiten Ihrer Anwendung. Durch die Verwendung von Bundler können Sie Konflikte in Ihren verbrauchten Edelsteinen schnell lösen und sich wieder an die Arbeit an Ihrem Anwendungscode machen.

Atlantic.Net

Atlantic.net bietet VPS-Hosting sowie Managed-Hosting-Dienste an, die eine Schicht von geschäftsessenziellen Managed-Services zu Ihren Hosting-Paketen beinhalten. Kontaktieren Sie uns noch heute für weitere Informationen.

.
.


Linux
  1. Raspberry Pi Firewall:So installieren und verwalten Sie sie mit UFW

  2. So verwalten Sie Protokolldateien mit Logrotate unter Linux

  3. So verwalten Sie NodeJS-Pakete mit Npm

  4. So verwalten Sie Flatpak-Berechtigungen grafisch mit Flatseal

  5. So installieren Sie Ruby Gems in cPanel

So erstellen und verwalten Sie Linux-Partitionen mit Parted

So verwalten Sie lokalen Speicher mit Stratis | Roter Hut

So verwalten Sie die Systemprotokolle mit Webmin

So verwalten Sie virtuelle Maschinen in KVM mit Virt-Manager

So stellen Sie Ghost-Designs mithilfe von GitHub-Aktionen bereit und verwalten sie

Ubuntu-Tipps:So verwalten Sie einfache Projekte mit Tomboy Notes