8

所以 ruby​​ 1.9 非常好,因为它会自动需要 ruby​​gems,因此当你调用require 'somegem'而不首先需要 ruby​​gems 时它会工作,这通常很棒。

但是我有大量使用 ruby​​ 的 shell 脚本,而且它们通常不依赖于 ruby​​gems。Shell 工具应该立即运行,并且无偿加载 ruby​​gems 是一个主要的拖累,主要是因为它涉及一堆带有分散小文件的磁盘操作。

我希望能够告诉 ruby​​ 在运行这些 shell 脚本时跳过加载 gem。理想情况下,类似于#!ruby --no-rubygemsshebang 线。

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

4

1 回答 1

6

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

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

所以,如果你有例如

#!/usr/bin/env ruby

然后,您不太可能将选项附加到末尾。如果OTOH您将其更改为

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

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

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

另一种方法是RUBYOPT在您的 shell 环境中设置环境变量,然后简单地切换到具有RUBYOPTunset (或设置为-w,我个人最喜欢的)的不同环境以进行 Ruby 开发。

于 2010-07-15T08:58:08.153 回答