$LOAD_PATH不包含工作目录



为什么当前目录不包含在$LOAD_PATH中?这看起来很奇怪。我只是不断地添加,但有什么原因我没有看到它只是没有自动包含?

$LOAD_PATH在Ruby 1.8.7中包含当前目录,但这种行为在1.9.2中已经改变。您可以在对这个问题的回答中找到可能的解释,但我认为基本的想法是,1.8.7中的.表示执行代码的目录,而不是代码所在的目录。在大多数情况下,你不希望这样,.$LOAD_PATH中是不可靠的。

使用require_relative在1.9.2可能是一个很好的解决方案,如果你不想手动添加.到你的$LOAD_PATH无处不在。你可以看到它所做的只是显式展开相对路径。需要注意的一点是,它在1.9.2之前的版本中不可用,因此它会使您的代码与旧的ruby不兼容。

最新更新