2010-07-15 17 views
8

Quindi Ruby 1.9 è davvero bello in quanto richiede automaticamente rubygems, e quindi quando si chiama require 'somegem' senza prima richiedere rubygems funzionerà, ed è generalmente fantastico.C'è un modo per chiamare ruby1.9 senza caricare i rubygems?

Ma ho un sacco di script di shell che utilizzano ruby ​​e in genere non fanno affidamento su rubygems. Gli strumenti di shell dovrebbero essere eseguiti immediatamente, e il caricamento di rubygems per niente è un grosso problema, soprattutto perché implica un mucchio di operazioni su disco con file piccoli sparsi.

Voglio essere in grado di dire a Ruby, quando si eseguono questi script di shell, di saltare il caricamento delle gemme. Idealmente, qualcosa come #!ruby --no-rubygems nella linea dello shebang.

Esiste una cosa del genere? O forse un'opzione di compilazione che indicherà che i rubygem rubino devono essere richiesti manualmente?

risposta

5

Sì, è possibile utilizzare l'opzione --disable-gems.

Si noti che l'esecuzione o meno delle opzioni nella linea shebang dipende dal sistema operativo in uso. Alcuni sistemi operativi non supportano le opzioni di passaggio su tutti, alcuni supportano solo il passaggio a un'opzione o argomento.

Quindi, se avete ad esempio

#!/usr/bin/env ruby 

Poi è abbastanza improbabile che si sarà in grado di collegare l'opzione fino alla fine. Se OTOH lo modifichi in

#!/usr/local/bin/ruby --disable-gems 

Quindi hai cablato il percorso del file binario Ruby nel tuo script.

E ovviamente ci sono sistemi operativi che non interpretano le linee di shebang per tutto. (Dopo tutto, non sono mai stati specificati in alcun standard e non sono nemmeno adeguatamente documentati.)

Un'alternativa sarebbe quella di impostare la variabile di ambiente RUBYOPT nell'ambiente della shell e passare semplicemente a un altro ambiente con RUBYOPT unset (o impostare su -w, il mio preferito) per lo sviluppo di Ruby.

Problemi correlati