Dzieje się tak dlatego, że katalog instalacyjny Gem używany przez komendę gem
, gdy wykorzystywane gem env
, jest ustawiony na coś takiego:Dlaczego instalujemy klejnoty Ruby 1.9.2/1.9.3 w folderze 1.9.1?
<base_ruby_dir>/lib/ruby/gems/1.9.1
Moje pytanie brzmi: dlaczego?
nie powinien być folder o nazwie:
<base_ruby_dir>/lib/ruby/gems/1.9.x
lub
<base_ruby_dir>/lib/ruby/gems/1.9
albo nie mógł tam być jeden za wersją Ruby, jak:
c:/ruby191/lib/ruby/gems/1.9.1
c:/ruby192/lib/ruby/gems/1.9.2
c:/ruby193/lib/ruby/gems/1.9.3
Nie krytyczny problem, który znam, po prostu się zastanawiałem.
Ok, rozumiem. Więc 1.9.1 oznacza, że klejnot jest zgodny z interfejsem C używanym w Rubim 1.9.1? Ten rodzaj ujawnia szczegóły wdrożenia, prawda? Z punktu widzenia użytkownika końcowego, dlaczego mnie to obchodzi? Czy kiedykolwiek zobaczę dwa foldery obok siebie, takie jak 1.9.1 i 1.9.4? Jeśli nie, to dlaczego mnie to obchodzi? – Ben
W prawo. C Api * zdecydowanie * ujawnia szczegóły implementacji! Użytkownicy Gem nie powinni dbać o ścieżkę. Odpowiedź edytowana na dwa ostatnie pytania –
Dla mnie pytanie dotyczy konwencji nazewnictwa katalogów. Jeśli wiemy, że zmiana w API C Rubiego spowoduje przekompilowanie wszystkich klejnotów przy użyciu tej wersji Ruby, to albo mam folder o nazwie 1.9.1 z klejnotami w, * lub * folder o nazwie 1.9.2 (lub cokolwiek). Jeśli nie mogę mieć obu (dla jednej wersji Rubiego), wówczas 1.9.x będzie bardziej sensowne.Nigdy nie widziałem tego samego folderu, który był używany do przechowywania klejnotów dla wielu wersji Ruby - czy jest to faktycznie przypadek użycia? – Ben