Ruby中的Kernel#require需要采取哪些确切的步骤?

时间:2012-05-25 18:25:15

标签: ruby

ruby​​规范没有记录采取的具体步骤,究竟是什么算法用于在MRI Ruby 1.9.3中定位然后执行文件?

我基本上是在寻找:http://docs.python.org/reference/simple_stmts.html#import用于Ruby

2 个答案:

答案 0 :(得分:3)

从技术上讲,您不需要文件,而您需要功能

如果您将完整路径提供给需求调用(例如require '/home/users/kerrick/my_lib/utils'),则会加载/home/users/kerrick/my_lib/utils.rb(或.so.dll或{{ 1}})文件。

如果您没有指定完整路径,那么Ruby将按照在UNIX提示符下运行.bundle时显示的顺序查看加载路径。

此外,请记住,如果您需要多次,它只会加载一次。

答案 1 :(得分:0)

这可能有所帮助,不确定它是否正在寻找。

https://github.com/rubinius/rubinius/blob/master/kernel/common/codeloader.rb#L198