/ usr / bin / ruby ​​vs. rvm - PullRequest
       5

/ usr / bin / ruby ​​vs. rvm

3 голосов
/ 23 марта 2012

Пройдя наконец-то очистку дистрибутивных ruby-пакетов из моей изолированной программной среды Ubuntu для замены на крайне рекомендуемый rvm, я, должно быть, неправильно понял кое-что фундаментальное:

Я не хочу менять все строки shebang во всех моих исходных файлах .rb с

#!/usr/bin/ruby

в / usr / local / rvm / bin / ruby ​​ или что-либо, зависящее от версии.

Мои исходные файлы необходимо , чтобы они оставались постоянными со своими аналогами на производственных серверах, используя системные ruby-файлы по умолчанию (не rvm).

Есть предложения по обеспечению универсальной согласованности кода? Должен ли я переключать шебанги раз и навсегда на что-то вроде

#!/usr/bin/env ruby

или (несмотря на то, что сайт этой ссылки говорит ), есть ли какой-то чистый способ для rvm подключиться к / usr / bin / ruby, предполагая, что все конфликтующие пакеты .deb были удалены? Не говоря уже о том, как заставить другие пакеты .deb зависеть от наличия ruby ​​+ libs для распознавания не дистрибутивного ruby ​​... но это может быть отдельной проблемой.

Ответы [ 2 ]

16 голосов
/ 23 марта 2012

единственный разумный путь:

#!/usr/bin/env ruby

всегда будет использовать текущий выбранный рубин в среде, не зависящей от какого-либо инструмента

2 голосов
/ 23 марта 2012

Использование env (1) shebang добавляет уровень сложности и ряд проблем безопасности, но это часто используемое решение.Одна проблема состоит в том, что он не связывает интерпретатор, но делает его специфичным для значений PATH для каждого пользователя.

Вы можете заменить /usr/bin/ruby символической ссылкой.В современном Linux рекурсивный shebang будет работать, и / usr / bin / ruby ​​может быть таким скриптом, как:

 #!/bin/sh
 exec /some/other/ruby "$@"
...