webentwicklung-frage-antwort-db.com.de

Bundler vs RVM vs Gems vs RubyGems vs Gemsets vs System ruby

Ich bin neu in Ruby und versuche, mich mit folgenden Konzepten zu beschäftigen: Bundler vs RVM vs Gems vs RubyGems vs Gemsets vs System Rub und ich bin verwirrt.

Kann jemand bitte eine 'Best Practice' beschreiben, wie ich all dies bei einer Neuinstallation der neuesten Version von Ubuntu verwalten soll? Was soll ich installieren und wie soll ich alles verwenden?

Ich vermute, dass ein Sudo apt-get install Ruby Nicht empfohlen wird, bin mir aber nicht sicher. Ich habe es auf meinem System zusätzlich zu 'all den anderen Ruby Zeug' ausprobiert. Es verstärkt nur meine Verwirrung. Ich spreche nicht über Rails, sondern nur regelmäßige Ruby Edelsteine ​​(zB Vagrant, Chef, Skripte).

90
user779159

Wie bereits in der vorherigen Antwort erwähnt, ist dies eine Menge zu behandeln. Betrachten Sie dies als eine kurze Einführung.

gems sind die Art und Weise, wie Ruby - Bibliotheken gepackt werden. Sie sind zu Ruby, was Gläser zu Java sind. In einer Gem-Datei finden Sie Ruby - Code (.rb-Dateien), aber auch Tests und eine spezielle Datei, die Informationen zum Gem selbst enthält, wie Name, Abhängigkeiten und Version ( gemspec ). Jedes Ruby Projekt kann die benötigten Edelsteine ​​über ein Gemfile definieren, das nur Abhängigkeiten deklarieren muss. Rubygems ist der Name des Paketmanagers - das Tool, mit dem die Pakete installiert werden (während die Edelsteine ​​die Pakete selbst sind). Rubygems ist jetzt ein Teil von Ruby.

Bundler macht das Verwalten von Edelsteinen erträglich. Basierend auf Ihrer Gemdatei wird ein einfacher Aufruf an den Bundler mit Bundle-Installation alle erforderlichen Gems herunterladen und installieren. Mit dem Standard-Gem-Befehl müssten Sie jeden von ihnen manuell mit gem install <gem_name> Installieren. Bundler ist nicht Teil von Ruby (es ist selbst als Juwel verpackt ), aber es ist ein "De-facto-Standard" für die meisten Anwendungen (Sie werden nicht viele Leute finden, die es nicht verwenden) , und eigentlich keine guten Gründe, es nicht zu benutzen).

RVM ist ein Tool, mit dem Sie mehrere Versionen von Ruby auf einer Maschine, die bei Bedarf zwischen ihnen umschaltet. Dies kann verwendet werden, um sowohl ein Ruby 1.8 als auch ein 1.9 oder sogar ein "MRI" (Matz's Ruby, die Standardimplementierung) und Alternativen (wie JRuby oder Rubinius) zu installieren. Beachten Sie, dass RVM in diesem Feld nicht alleine ist, siehe zum Beispiel rbenv .

Ein gemset in RVM ist ein Satz von Gems, die für einen bestimmten Kontext spezifisch sind, normalerweise ein Projekt. Dies ist nützlich, wenn Sie beispielsweise verschiedene Anwendungen mit jeweils eigenen Edelsteinsätzen entwickeln und diese getrennt halten möchten.

System Ruby ist bei Verwendung von RVM die Version Ruby, die auf dem Computer installiert ist (dh nicht) über RVM).

Wenn Sie gerade erst anfangen, sind Edelsteine ​​und Bündler für Sie von Interesse. Sie können RVM und Gemsets vorerst beiseite lassen.

166
Martin

In einer Frage werden Sie nach mehr Informationen gefragt, als für Stack Overflow zulässig ist. Um das alles abzudecken, würde man ein Buch brauchen.

Unter Ubuntu ist es einfach, Gems in der "System" -Version von Ruby zu installieren und zu entfernen. Gewöhnen Sie sich also daran, reguläre Gems über Sudo zu installieren und zu entfernen. (Unter Mac OS würde ich einen anderen Rat geben, weil Apple Bundles Ruby für den Eigengebrauch und es keine gute Idee ist, damit herumzuspielen.) Dann Wenn Sie eine Idee haben, wie die gesamte Edelsteinidee funktioniert, und wissen, dass Sie mehrere Ruby Versionen auf Ihrem System haben möchten, versuchen Sie " rbenv " oder " RVM "und installiere ein oder zwei Versionen in deiner Sandbox.

Linux macht es einfach, Ruby über eine Distribution hinzuzufügen/zu entfernen, aber wir sind auf die Versionen beschränkt, die die Distributoren gepackt haben, daher installiere ich normalerweise von der Quelle aus verschiedene Versionen von Ruby für Entwicklungs-, Test- und Produktionssysteme, weshalb rbenv und RVM = wurden erfunden - sie kümmern sich um die schmutzigen Details, sodass wir uns auf die Programmierung konzentrieren können.

Ich habe sowohl rbenv als auch RVM verwendet und benutze rbenv seit ungefähr sechs Monaten mit guten Ergebnissen. Es ist weniger kompliziert als RVM, was mir gefällt. In beiden Fällen ist es einfach, verschiedene Versionen mit separaten Gems-Sets zu installieren. Sie können verschiedene Ruby Versionen in verschiedenen Terminalfenstern öffnen, um die Kompatibilität zu testen.

Regel 1 beim Debuggen ist, Änderungen nacheinander vorzunehmen. Dies gilt für das Erlernen des Programmierens oder das Erlernen einer neuen Sprache. Lass dich nicht ablenken, halte es einfach.

1
the Tin Man