在我的Ruby程序中,我试图懒惰加载一个库(好奇的破解).
如果我这样做:
require 'rubygems'
require 'crack'
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是,当我尝试这个:
require 'rubygems'
autoload :Crack, 'crack'
Run Code Online (Sandbox Code Playgroud)
引发LoadError.(没有这样的文件加载 - 破解)
为什么会出现此错误?是因为'crack'(因此我的其他用户安装的宝石)不在我的$ LOAD_PATH中吗?
编辑:
此外,autoload与标准库一起使用:
autoload :Yaml, 'yaml'
Run Code Online (Sandbox Code Playgroud)
工作正常,并没有错误.
您需要通过执行以下操作将'crack'gem添加到$ LOAD_PATH:
gem 'crack'
Run Code Online (Sandbox Code Playgroud)
这是必要的,因为RubyGems将一个方法替换为内核#require,该方法在需要之前尝试"激活"gem,但是对于内核#load没有做同样的事情 - 并且后端上的自动加载调用加载.
| 归档时间: |
|
| 查看次数: |
773 次 |
| 最近记录: |