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

时间:2010-07-15 06:13:07

标签: ruby shell rubygems ruby-1.9

所以ruby 1.9非常好,因为它会自动需要rubygems,因此当你在没有首先需要rubygems的情况下调用require 'somegem'时它会起作用,这通常很棒。

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

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

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

1 个答案:

答案 0 :(得分:5)

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

请注意,在shebang行中传递选项是否有效取决于您的操作系统。某些操作系统不支持传递选项 ,有些只支持传递一个选项或参数。

所以,如果你有例如

#!/usr/bin/env ruby

然后你很可能无法将选项附加到最后。如果你将OTOH改为

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

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

当然,有些操作系统根本没有解释shebang行 。 (毕竟,它们从未在任何标准中指定,甚至没有正确记录。)

另一种方法是在您的shell环境中设置RUBYOPT环境变量,只需切换到RUBYOPT未设置(或设置为-w,我个人最喜欢的)的其他环境你的Ruby开发。