Como usar a versão especificada do Ruby para shell script com rbenv?

Como usar a versão especificada do Ruby para shell script com rbenv?

Vou escrever um pequeno script em Ruby. E quero especificar a versão Ruby por shebang ou de outra forma.

Usarei o script em muitos ambientes. Estou usando o rbenv nos ambientes, mas não tenho certeza qual versão do Ruby está instalada.

O script deverá falhar se a versão especificada do Ruby não estiver instalada.

Como eu posso fazer isso? Existe um bom caminho que devo seguir?

Responder1

De acordo comdocumentos oficiaisparece que você só precisa prefixar seus scripts assim:

#!/usr/bin/env ruby

E então faça uma das seguintes coisas para saber rbenvqual versão do Ruby usar:

excerto:https://github.com/sstephenson/rbenv

Escolhendo a versão Ruby

Quando você executa um shim, rbenvdetermina qual versão do Ruby usar lendo-a das seguintes fontes, nesta ordem:

  1. A RBENV_VERSIONvariável de ambiente, se especificada. Você pode usar o rbenvcomando shell para definir esta variável de ambiente em sua sessão shell atual.

  2. O primeiro .ruby-versionarquivo encontrado pesquisando o diretório do script que você está executando e cada um de seus diretórios pais até chegar à raiz do seu sistema de arquivos.

  3. O primeiro .ruby-versionarquivo encontrado pesquisando o diretório de trabalho atual e cada um de seus diretórios pais até chegar à raiz do seu sistema de arquivos. Você pode modificar o .ruby-versionarquivo no diretório de trabalho atual com o rbenvcomando local.

  4. O arquivo global ~/.rbenv/version. Você pode modificar este arquivo usando o rbenvcomando global. Se o arquivo da versão global não estiver presente, rbenvassume que você deseja usar o "sistema" Ruby - ou seja, qualquer versão que seria executada se rbenvnão estivesse em seu caminho.

Você pode então usar este comando para criar um .ruby-versionarquivo no diretório junto com o script Ruby.

$ rbenv local 1.9.3-p327

informação relacionada