2015-09-25 8 views
0

Скажем, у меня есть притон в рубиновый скрипт так:(Ruby) Возможно ли, чтобы у shebang была «резервная» версия ruby?

#!/usr/local/rvm/rubies/ruby-2.0.0-p647/bin/ruby 

Но сценарий выполняется на четырех разных серверах и управляется одним мерзавца репо (который я предпочел бы не расшириться до бесконечности).

Один из серверов имеет 2.0.0-p647, один из них имеет 2.0.0-p598, один имеет 2.0.0-p643 и имеет только ruby ​​2.1.1. Скрипт требует использования отрицательных lookbehind в регулярных выражениях, что означает, что он должен использовать 2.0.0 или выше.

Это отрицает возможность использования значений по умолчанию, поскольку установка по умолчанию по меньшей мере на одном из серверов составляет 1.9.3, и я не могу изменить значения по умолчанию или изменить по умолчанию.

Есть ли способ настроить shebang таким образом, чтобы он «падал» на другую версию рубина, если предпочтительный вариант недоступен?

+2

... Это звучит как вопрос администрирования сервера. –

+0

Это, в конечном счете, но иногда, когда это происходит, вам нужно обходить их, пока они не будут исправлены. –

+0

@SergioTulentsev Symlinks! Почему я не подумал об этом. Спасибо, приятель, если вы сделаете это фактическое сообщение, я приму это как ответ. –

ответ

0

Я ужасный администратор, и это может пойти против принципов RVM, но не является ли это очевидным решением?

Symlinks! Сделать shebangs использовать /usr/local/bin/ruby (или что-то в этом роде) и на каждой машине сделать этот путь символической ссылкой на установленный рубин.

0
#!/usr/bin/env ruby 

, а затем просто убедитесь, что рубин вы хотите в среде

+0

Разве это не означает, что загрузка RVM в (возможно, -интерактивная) оболочка? –

+0

хорошо это означало бы добавление каталога RVM в путь. Не видите, что он отличается от символьного маршрута. – Doon