Подтвердить что ты не робот

Как я могу сделать rbenv распознать версии версии 1.9.3-p *** Ruby?

Я пытаюсь запустить какой-то проект Ruby, а проект использует файл .ruby-version. Этот файл содержит только:

1.9.3

Я установил последнюю версию Ruby 1.9.3:

$ rbenv install 1.9.3-p448

Однако, когда я запустил ruby --version, я получил

rbenv: version '1.9.3' is not installed

Чтобы исправить эту ошибку, я перечислил ~/.rbenv/versions/ и содержал папку 1.9.3-p448. Я переименовал эту папку в 1.9.3 и запустил rbenv rehash. Это устранило проблему.

Похож на часть -p448 (что это значит? Патч?) смущает rbenv. Как я могу распознать правильную версию 1.9.3 без ручного переименования папки в ~/.rbenv? Я мог бы также изменить .ruby-version на 1.9.3-p448, но это означает, что проект будет зависеть от моего конкретного "патча" Ruby 1.9.3, что плохо.

4b9b3361

Ответ 1

rbenv не позволяет этого. Из wiki:

Другие менеджеры версий могут допускать соответствие нечеткой версии на строка, считанная из файла .ruby-version, например. они могут позволить "1.9.3" (без суффикса патча), чтобы соответствовать последней версии Ruby 1.9.3. rbenv не будет поддерживать этот, поскольку такое поведение непредсказуемо и поэтому вредно.

комментарий mislav из файла Common.ruby-version для проектов Ruby:

rbenv будет поддерживать .ruby-version, но определенно без каких-либо нечеткое сопоставление. Вот почему я думаю, что нечеткое сопоставление - плохая идея:

  • Предположим, что у меня установлен 1.9.3-p0.
  • Я поместил "ruby-1.9" в .ruby-version в свой проект, и все хорошо.
  • Через некоторое время я устанавливаю 1.9.3-p300, чтобы попробовать, и вдруг все мои проекты, отмеченные "ruby-1.9", автоматически обновляются до него. Драгоценные камни должны переустановить, необходимо обновить собственные расширения и т.д. Кошмар.

Одна из важных причин, почему у нас есть менеджеры версий, о версиях. rbenv будет точным. Если вам нужны симпатичные ярлыки и amp; aliases, вы всегда можете создавать символические ссылки.

Альтернативы

  • Отмените файл .ruby-version, установив переменную среды RBENV_VERSION (например, для текущей оболочки, запустив rbenv shell 1.9.3-p448).
  • Символы 1.9.3 до 1.9.3-p448, см. rbenv-aliases для деталей.

Ответ 2

Попробуйте chruby. Он позволяет нечеткое сопоставление Rubies, поэтому ruby-1.9, 1.9.3 и jruby должны работать только.