2010-07-15 20 views
8

Así que ruby ​​1.9 es realmente bueno en cuanto a que requerirá rubygems automáticamente, y por lo tanto, cuando llamas al require 'somegem' sin primero requerir rubygems funcionará, y eso es generalmente asombroso.¿Hay alguna manera de llamar a ruby1.9 sin cargar rubygems?

Pero tengo un montón de scripts de shell usando ruby, y generalmente no confían en rubygems. Las herramientas de shell deben ejecutarse de manera instantánea, y cargar rubygems por nada es una gran traba, sobre todo porque involucra un montón de operaciones de disco con pequeños archivos dispersos.

Quiero poder decirle a ruby, al ejecutar estos scripts de shell, que salten las gemas de carga. Idealmente, algo como #!ruby --no-rubygems en la línea shebang.

¿Existe tal cosa? ¿O tal vez una opción de compilación que diga Ruby Rubygems debe ser requerida manualmente?

Respuesta

5

Sí, puede usar la opción --disable-gems.

Tenga en cuenta que si las opciones de paso en la línea de shebang funcionan o no dependen de su sistema operativo. Algunos sistemas operativos no admiten las opciones de pase en total, algunos solo admiten pasar una opción o argumento.

Por lo tanto, si usted tiene por ejemplo

#!/usr/bin/env ruby 

entonces es muy poco probable que usted será capaz de conectar la opción hasta el final. Si otoh que cambia a

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

Luego de haber cableado de la ubicación del binario de Ruby en su guión.

Y, por supuesto, hay sistemas operativos que no interpretan las líneas de shebang en total. (Después de todo, nunca se especificaron en ningún estándar, y ni siquiera están documentados correctamente.)

Una alternativa sería establecer la variable de entorno RUBYOPT en el entorno del shell y simplemente cambiar a un entorno diferente con RUBYOPT unset (o establecer en -w, mi favorito personal) para su desarrollo de Ruby.

Cuestiones relacionadas