在我的ruby程序中,我试图延迟加载一个库(crack对于好奇的人)。
如果我这样做:

require 'rubygems'
require 'crack'

一切正常。但是,当我试着这样做时:
require 'rubygems'
autoload :Crack, 'crack'

出现加载错误。(没有要加载的文件--crack)
为什么会出现这个错误?是因为'crack'(因此我的其他用户安装的gems)不在我的$load路径中吗?
编辑:
此外,autoload确实适用于标准库:
autoload :Yaml, 'yaml'

工作正常,不会出错。

最佳答案

您需要通过执行以下操作将“crack”gem添加到$load_路径中:

gem 'crack'

这是必要的,因为rubygems用一个方法替换kernel require,该方法在需要gem之前尝试“激活”gem,但不会对后端的kernel加载和自动加载调用加载执行相同的操作。

10-08 04:00