Почему мы устанавливаем гемы Ruby 1.9.2 / 1.9.3 в папку 1.9.1? - PullRequest
21 голосов
/ 19 декабря 2011

Это происходит из-за того, что каталог установки Gem, используемый командой gem, видимый при использовании gem env, настроен на что-то вроде:

<base_ruby_dir>/lib/ruby/gems/1.9.1

Мой вопрос - почему?1007 * Если папка не называется:

<base_ruby_dir>/lib/ruby/gems/1.9.x

или

<base_ruby_dir>/lib/ruby/gems/1.9

, иначе не может быть ни одной на версию Ruby, например:

c:/ruby191/lib/ruby/gems/1.9.1
c:/ruby192/lib/ruby/gems/1.9.2
c:/ruby193/lib/ruby/gems/1.9.3

Не проблема, я знаю, мне просто интересно.

Ответы [ 2 ]

28 голосов
/ 19 декабря 2011

В Ruby 1.9.0 интерфейс C был изменен по сравнению с серией Ruby 1.8.

Драгоценные камни, которые компилируются в собственный код, должны были перекомпилироваться.

Интерфейс был снова изменен в Ruby 1.9.1 и оставлен таким же в Ruby 1.9.2 и 3. Это объясняет 1.9.1, который вы видите на своем пути.

Идея состоит в том, что вы можете установить разные версии Ruby в своей системе, и что гемы будут совместно использоваться в группах, имеющих одинаковый C api. Таким образом, Ruby 1.8.6 и 1.8.7 могут делиться своими драгоценными камнями, как и Ruby 1.9.1, .2 и .3.

Хотя это не обязательно лучшая идея. В любом случае, большинство людей используют rvm для доступа к различным версиям Ruby, а rvm хранит гемы отдельно для каждой версии, независимо от версии C api.

0 голосов
/ 19 декабря 2011

Я думаю, это потому, что эти версии должны быть совместимы, и если бы у вас были отдельные каталоги, вам пришлось бы переустанавливать все свои гемы вместе с ним.Таким образом, вы можете обновить версию ruby ​​без переустановки всех драгоценных камней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...