Come usare la versione specifica di ruby ​​per lo script di shell con rbenv?


8

Scriverò qualche breve sceneggiatura in ruby. E voglio specificare la versione rubino di Shebang o in un altro modo.

Userò la sceneggiatura in molti ambienti. Sto usando rbenv negli ambienti, ma non sono sicuro di quale versione di Ruby sia installata.

Lo script deve fallire se la versione specificata di ruby ​​non è installata.

Come posso farlo? C'è un buon modo che dovrei seguire?

Risposte:


7

Secondo i documenti ufficiali sembra che devi solo aggiungere il prefisso ai tuoi script in questo modo:

#!/usr/bin/env ruby

E poi fai una delle seguenti cose per dire rbenvquale versione di Ruby usare:

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

Scelta della versione di Ruby

Quando si esegue uno shim, rbenvdetermina quale versione di Ruby utilizzare leggendola dalle seguenti fonti, in questo ordine:

  1. La RBENV_VERSIONvariabile di ambiente, se specificata. È possibile utilizzare il rbenvcomando shell per impostare questa variabile di ambiente nella sessione di shell corrente.

  2. Il primo .ruby-versionfile trovato cercando nella directory dello script che stai eseguendo e in ciascuna delle sue directory principali fino a raggiungere la radice del tuo filesystem.

  3. Il primo .ruby-versionfile trovato cercando la directory di lavoro corrente e ciascuna delle sue directory principali fino a raggiungere la radice del file system. È possibile modificare il .ruby-versionfile nella directory di lavoro corrente con il rbenvcomando locale.

  4. Il ~/.rbenv/versionfile globale . È possibile modificare questo file utilizzando il rbenvcomando globale. Se il file della versione globale non è presente, si rbenvpresuppone che si desidera utilizzare il "sistema" Ruby, ovvero qualsiasi versione verrebbe eseguita se rbenvnon fosse presente nel percorso.

È quindi possibile utilizzare questo comando per creare un .ruby-versionfile nella directory insieme allo script Ruby.

$ rbenv local 1.9.3-p327

Deprecato ora; Per documento specificato; Ora, quando esegui script o binstub in un'applicazione con un file .ruby-version, rbenv utilizzerà automaticamente la versione di Ruby specificata dall'applicazione, indipendentemente dalla directory da cui viene eseguita.
AnneTheAgile
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.