在我的 Ruby 程序中,我试图延迟加载一个库(crack http://github.com/jnunemaker/crack/tree/master对于好奇的人)。
如果我这样做:
require 'rubygems'
require 'crack'
一切正常。但是,当我尝试这样做时:
require 'rubygems'
autoload :Crack, 'crack'
引发 LoadError。 (没有要加载的文件——破解)
为什么会出现这个错误?是因为“crack”(以及我的其他用户安装的 gem)不在我的 $LOAD_PATH 中吗?
edit:
此外,autoload
与标准库一起使用:
autoload :Yaml, 'yaml'
工作正常,并且不会引发任何错误。
您需要通过执行以下操作将“crack”gem 添加到您的 $LOAD_PATH:
gem 'crack'
这是必要的,因为 RubyGems 将 Kernel#require 替换为一种方法,该方法在必要时尝试在需要之前“激活”gem,但不会对 Kernel#load 执行相同的操作 - 并且 autoload 调用会在后端加载。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)