Desidero che la mia app sia non essere in grado di utilizzare qualsiasi gemma installata. C'è un parametro di avvio 1.9 rubino o modo di farlo a livello di programmazione?come avviare Ruby 1.9 senza rubini
risposta
ruby --disable-gems
è il parametro della riga di comando MRI (1.9). "Impedisce l'aggiunta delle directory di installazione di gem al percorso di caricamento predefinito". (The Ruby Programming Language, pagina 391)
Modifica 25-10-2012: il core di Ruby aveva la stessa idea di @rogerdpack nei commenti e ha aggiunto il parametro più dettagliato ruby --help
. Ruby revision!
Premete che ruby -h non emette questo, né vi offre un'opzione 'prolissa' per questo. yikes. – rogerdpack
@rogerdpack Sì, è strano. Segnalato [come bug] (http://bugs.ruby-lang.org/issues/7184). – steenslag
Jorg W Mittag ha un commento più dettagliato su '--disable-gems' a http://stackoverflow.com/a/3253995/38765 –
Guardando allo rubygems configuration file, tenterei di eseguire lo smistamento gempath
o gemhome
per vedere se è possibile sostituire (anziché solo aggiungere) valori predefiniti.
Se, ad esempio, l'impostazione di gempath
è vuota, o di puntare a /dev/null
, impedisce l'utilizzo di gem di sistema, quindi quella sarebbe la strada da percorrere.
Il vantaggio principale a questo, come vedo, è che il file di configurazione anti-rubygems può essere passato a ruby 1.9 come parametro di avvio (quindi non codificato), ben documentato e controllato nel repository.
Tutto questo è, naturalmente, ignorando che i rubygems fanno parte della libreria standard di Ruby 1.9 - così rubino può soffocare e morire se non può avere accesso alle sue gemme, a seconda di quanta parte dell'installazione di base di Ruby richiede la funzionalità gem. YMMV.
è un'idea affascinante: basta modificare il gempath nella sceneggiatura. genio! – rogerdpack
cosa stai cercando di ottenere con quello? – phoet
In che modo la tua app utilizzerà gemme a meno che tu non gli dica di farlo? Sembra non aggiungere alcun comando di tipo 'require' per risolvere il problema. Sembra anche che un utente che invoca l'interprete di Ruby possa usare ''-r'' e forzare Ruby a caricare qualcosa, indipendentemente dal fatto che il tuo codice lo dica o meno. –
Voglio assicurarmi di non utilizzare mai gemme di sistema, solo file locali, nella mia esecuzione (per preparare la mia app per la distribuzione). – rogerdpack