2015-05-21 18 views
6

Ktoś proszę mi pomóc zrozumieć, w jaki sposób aplikacja ruby ​​zarządza gemsetami gemfile i rvm dla aplikacji. Jeśli obecnie używam Gemset, z kilkoma zainstalowanymi klejnotami, a także mam klejnoty w moim pliku gem, to czy aplikacja Ruby używa klejnotów z gemfile lub z gemset dla aplikacji?RVM Gemsets i Ruby Gemfile zamieszanie

Odpowiedz

4

Aby to zrozumieć, musisz cofnąć się i zrozumieć, w jaki sposób działają klejnoty rubinowe.
Zacznijmy od systemu, który nie ma rvm ani Gemfile.
Po zainstalowaniu klejnotu za pomocą "instalacji klejnotów" przechodzi do lokalizacji klejnotu systemowego.
Ilekroć napiszesz skrypt w rubinie i potrzebujesz klejnotu, zostanie on odebrany.

Załóżmy teraz, że musisz użyć innej wersji klejnotu dla różnych projektów. W tym miejscu pojawia się bundler. Tworzysz Gemfile, a kiedy "instalujesz pakiet", klejnoty wymienione w Gemfile zostaną wprowadzone i użyte w kontekście tego projektu. Będziesz musiał wykonać "bundle install", aby je wprowadzić, a następnie "bundle exec ruby", aby działał z wersją gem. Możesz mieć wiele wersji klejnotów i wybrać, który z nich wybrać. Jeśli nie przejdziesz przez bundler, użyjesz tego, co jest w systemie.

Rvm teraz. Załóżmy, że chcesz zmodyfikować klejnoty "system" i ruby ​​w uporządkowany sposób. Zasadniczo jest to klejnot rvm. dzięki magii pośredniej poprzez ścieżki, możesz instalować klejnoty dla różnych zestawów klejnotów i udawać, że są klejnotami systemowymi.

Więc klejnoty i gemfile są ortogonalne na siebie. jeśli użyjesz pliku gem, klejnoty zostaną zainstalowane w zestawie klejnotów, ale zwykle nie dbasz o to, jeśli przejdziesz przez bundler.

Zwykle chciałbyś użyć Gemfile.

+0

To bardzo pomaga. Dzięki! –

Powiązane problemy