有没有办法在不加载rubygems的情况下调用ruby1.9?

kch*_*kch 8 ruby shell rubygems ruby-1.9

所以ruby 1.9非常好,因为它会自动需要rubygems,因此当你打电话require 'somegem'而不需要首先需要rubygems时它会起作用,这通常很棒.

但我有大量使用ruby的shell脚本,它们通常不依赖于rubygems.Shell工具应该立即运行,并且什么都不加载rubygems是一个主要障碍,主要是因为它涉及一堆磁盘操作与分散的小文件.

我希望能够在运行这些shell脚本时告诉ruby跳过加载gem.理想情况下,像#!ruby --no-rubygemsshebang线一样.

有这样的事吗?或者可能是一个编译选项,它将告诉ruby ruby​​gems必须手动需要?

Jör*_*tag 5

是的,您可以使用该--disable-gems选项.

请注意,在shebang行中传递选项是否有效取决于您的操作系统.有些操作系统不支持传球选择可言,路过一些只支持一个选项或参数.

所以,如果你有例如

#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)

那么你几乎不可能将选项附加到最后.如果OTOH你改变它

#!/usr/local/bin/ruby --disable-gems
Run Code Online (Sandbox Code Playgroud)

然后,您已将Ruby二进制文件的位置硬连线到您的脚本中.

当然,也有操作系统不解释家当线条可言.(毕竟,它们从未在任何标准中指定,甚至没有正确记录.)

另一种方法是RUBYOPT在shell环境中设置环境变量,并简单地切换到不同的环境,使用RUBYOPTunset(或设置为-w我个人最喜欢的)来进行Ruby开发.