【发布时间】:2012-01-28 00:14:41
【问题描述】:
我不明白 Ruby 中$:<< "." 的含义。
我将 Ruby 升级到 1.9.1,但程序无法运行。同学告诉我应该加$:<< "."
$:<< "." 是做什么的?
【问题讨论】:
-
了解为什么 Ruby 不再在搜索路径中包含“
.”很重要。如果有人能够将具有所需文件名的文件放入您的“.”目录中,则可能会对应用程序进行利用。 1.9 之前的行为将加载该文件,覆盖所需文件的行为,并以应用程序所有者的权限运行。那可能是灾难性的。默认的require行为已更改,但添加了require_relative以允许您从与脚本相关的目录中加载。我从不使用$:<< '.',而是明确列出路径。 -
请注意,如果该行的目标是允许您自己
require与当前脚本位于同一目录中的文件,那不是您想要的完全:它除非脚本位于当前工作目录中,否则将无法正常运行。要将脚本的目录添加到加载路径,请使用$:.unshift File.dirname(__FILE__)(我使用unshift将目录添加到列表中,以便它优先于可能存在的任何其他加载路径。)