Как использовать указанную версию ruby ​​для сценария оболочки с rbenv?

8

Я собираюсь написать небольшой сценарий на ruby. И я хочу указать версию ruby ​​по shebang или по-другому.

Я буду использовать сценарий во многих средах. Я использую rbenv в среде, но не уверен, какая версия ruby ​​установлена.

Сценарий должен завершиться ошибкой, если указанная версия ruby ​​не установлена.

Как мне это сделать? Есть ли хороший способ, которым я должен следовать?

Ironsand
источник

Ответы:

7

В соответствии с официальными документами это звучит так, как будто вам просто нужно добавить префикс ваших скриптов следующим образом:

#!/usr/bin/env ruby

А затем выполните одно из следующих действий, чтобы указать, rbenvкакую версию Ruby использовать:

выдержка: https://github.com/sstephenson/rbenv

Выбор версии Ruby

Когда вы выполняете shim, rbenvопределяет, какую версию Ruby использовать, читая ее из следующих источников, в следующем порядке:

  1. RBENV_VERSIONПеременная окружения, если он указан. Вы можете использовать команду rbenvоболочки для установки этой переменной среды в текущем сеансе оболочки.

  2. Первый .ruby-versionфайл, найденный путем поиска в каталоге сценария, который вы выполняете, и в каждом из его родительских каталогов, пока не достигнете корня вашей файловой системы.

  3. Первый .ruby-versionфайл, найденный путем поиска текущего рабочего каталога и каждого из его родительских каталогов до достижения корня вашей файловой системы. Вы можете изменить .ruby-versionфайл в текущем рабочем каталоге с помощью rbenvлокальной команды.

  4. Глобальный ~/.rbenv/versionфайл. Вы можете изменить этот файл с помощью rbenvглобальной команды. Если файл глобальной версии отсутствует, rbenvпредполагается , что вы хотите использовать «системный» Ruby - то есть, какую бы версию не запускали, если бы rbenvне было на вашем пути.

Затем вы можете использовать эту команду для создания .ruby-versionфайла в каталоге вместе со скриптом Ruby.

$ rbenv local 1.9.3-p327
SLM
источник
Устарела сейчас; В соответствии с документом; Теперь, когда вы запускаете сценарии или binstubs в приложении с файлом .ruby-version, rbenv будет автоматически использовать указанную версию Ruby приложения, независимо от того, из какого каталога он запущен.
AnneTheAgile