Sie dienen verschiedenen Zwecken. RVM erstellt eine Sandbox, um Ihre Ruby-Installationen zu verwalten. Als Teil davon können Sie auch Edelsteine definieren.
Bundler verwaltet deine Rubine nicht, es funktioniert mit dem aktuell ausgewählten Ruby.
Also, ich denke, Sie sollten RVM als Konfigurationsmanager für Ihre Entwicklungsumgebung betrachten und Bundler den Edelsteinmanager für eine Anwendung.
EDIT: Zusätzliche Gedanken -
Ob wir RVM verwenden oder nicht, normalerweise müssen wir alle Edelsteine, die wir für eine App verwenden wollen, manuell mit gem install blah
für jedes Juwel, das wir verwenden wollen, laden.
Ich verwalte meine Edelsteine über mehrere Rubine hinweg von Hand. Sobald sie installiert sind, kann ich mit RVM Edelsteinsets erstellen, aber RVM ruft nicht automatisch eine bestimmte Version eines Edelsteins ab, wenn es nicht installiert ist, oder holt es wieder, wenn es entfernt wurde. Da sich RVM mehr mit Ihrer Ruby-Umgebung beschäftigt, lässt es die Versionsverwaltung von Edelsteinen meist an gem
und an uns.
Bundler kümmert sich andererseits um die fehlenden Teile in RVM. Wenn Sie das Gemfile für Bundler erstellen, ruft es die erforderlichen Edelsteine und spezifischen Versionen ab, falls angegeben. So wird die Installation einer Ruby-App auf einem anderen Computer viel einfacher. Schieben Sie die Dateien auf den anderen Rechner, und führen Sie bundle install
aus und es erledigt den Rest.
Es funktioniert gut mit Rails und ist eine vernünftige Lösung für meine Produktionsdateien. Es wird viel einfacher sein, als ich mit Perl-Distributionen umgehen muss, um Perl-Anwendungen auf denselben Hosts laufen zu lassen.
RVM ist mehr wie eine Eindämmungseinheit. Während Bundler ist wie ein Manifest (Abhängigkeitsmanager) von dem, was die Anwendung in ihrem Lebenszyklus (unter anderem) benötigt oder verwendet.
Wenn Sie in Rails arbeiten, können Sie Bundler nicht verlassen. Aber ich benutze es die ganze Zeit, nur damit ich weiß, welche Edelsteine ich brauche, und auch andere, die später in das Projekt kommen.
RVM hilft mir, meine Rubine zu trennen und dann weiter in Rubies / Projekte. So habe ich nicht eine Menge Edelsteine und verschiedene Versionen in einem Stapel.
Nicht gerade die actionreichste Antwort, aber hoffe, es hilft ein wenig.
Um Ihre Frage direkt zu beantworten ...
Was macht Bundler mit diesem RVM? nicht?
Bunlder installiert alle Edelsteine, die von einem Projekt benötigt werden (das Bundler verwendet und alle benötigten Edelsteine in einer Gemfile angegeben hat). RVM macht das nicht.
Mit dem Gemfile können Sie angeben, welche Edelsteingruppen (dh: Entwicklung, Testen) ...
Es gibt viele "kleine" Dinge wie diese, die Bundler macht, aber RVM nicht. Im Allgemeinen, wie die oben genannten guten Leute erklären, hat RVM andere Ziele als Bündler. RVMs zum Verwalten von Ruby-Laufzeiten während Bundler geht es darum, abhängige Edelsteine für eine Anwendung zu verwalten.
Bundler ist ein Tool zum Verwalten von Abhängigkeiten in Ihrem Code - also allen benötigten Edelsteinen. Es stellt sicher, dass alle Edelsteine, die Sie in Ihrer Gemdatei angeben, und alle Abhängigkeiten auf Ihrem System installiert sind. Es ist nicht wirklich wichtig, welche Version von Ruby Sie verwenden, es installiert nur die Edelsteine für Sie, unabhängig davon, welcher Interpreter gerade verwendet wird.
RVM ist ein Tool zum Ausführen mehrerer Rubine und theoretisch auch mehrerer Edelsteinsets. Abhängigkeiten werden für Sie überhaupt nicht behandelt - es liegt immer noch an Ihnen, die Edelsteine zu installieren.
Meine Erfahrung (und ich bin neu in RVM) ist, dass Sie sich nicht mit RVM beschäftigen wollen, es sei denn, Sie benötigen mehrere Rubine oder benötigen Edelsteine für verschiedene Projekte, die irgendwie miteinander kollidieren. Selbst wenn Sie RVM verwenden, ist es sinnvoll, Bundler zum Verwalten von Gem-Abhängigkeiten zu verwenden, damit Ihre Gemfile in jedem von Ihnen verwendeten Code-Repository nachverfolgt werden kann.
Tags und Links ruby ruby-on-rails-3 bundler rvm