2015-05-21 13 views
6

Jemand bitte helfen Sie mir zu verstehen, wie eine Ruby-App verwaltet sowohl die Gemfile und die RVM Gemsets für eine App. Wenn ich gerade ein Gemset mit einer Menge installierter Edelsteine ​​benutze und ich auch Edelsteine ​​in meiner Edelsteindatei habe, verwendet die Ruby App die Edelsteine ​​aus der Edelsteindatei oder aus dem Edelsteinsatz für die App?RVM Gemsets und Ruby Gemfile Verwirrung

Antwort

4

Um dies zu verstehen, müssen Sie zurücktreten und verstehen, wie Ruby Gems im Allgemeinen arbeiten.
Beginnen wir mit einem System, das keine Rvm oder eine Gemfile hat.
Wenn Sie ein Juwel über "Gem Install" installieren, wird es in den System-Edelstein-Speicherort übernommen.
Immer wenn du ein Ruby-Skript schreibst und das Juwel benötigst, wird es von dort abgeholt.

Jetzt nehmen Sie an, Sie müssen verschiedene Version eines Edelsteins für verschiedene Projekte verwenden. Hier kommt Bundler ins Spiel. Du erstellst ein Gemfile und wenn du "bundle install" installierst, werden die Edelsteine, die in der Gemfile aufgelistet sind, in den Kontext des Projekts eingefügt. Sie müssen "bundle install" ausführen, um sie einzubinden, und danach "bundle exec ruby", um mit der gem-Version zu arbeiten. Sie können mehrere Edelstein-Versionen haben und eine auswählen, die Sie verwenden möchten. Wenn Sie nicht durch Bundler gehen, werden Sie verwenden, was im System vorhanden ist.

Rvm jetzt. Angenommen, Sie möchten die "System" - und Ruby-Versionen in einer organisierten Weise ändern. Dies ist im Grunde, was ein RMV-Edelstein ist. Durch die Magie der Indirection über Pfade können Sie Edelsteine ​​für verschiedene Edelstein-Sets installieren und so tun, als wären sie System-Edelsteine.

Also Gemsets und Gemfiles sind orthogonal aufeinander. Wenn Sie eine Edelstein-Datei verwenden, werden die Edelsteine ​​in dem Edelstein-Set installiert, aber das ist normalerweise nicht wichtig, wenn Sie einen Bundler verwenden.

Normalerweise möchten Sie die Gemfile verwenden.

+0

Das hilft viel. Vielen Dank! –