Ruby在Windows路径上的要求在dir中不起作用

时间:2011-11-17 23:58:08

标签: ruby windows

我有一个小的ruby程序,require文件位于同一目录中。程序在我的Mac上工作得很完美,当我运行测试ruby脚本时没有任何要求它也可以。默认情况下,ruby程序似乎不会在文件的当前目录中查找。例如.目录。{{1}}在Windows中我需要更新这个,所以ruby会在当前目录中查找需求吗?

3 个答案:

答案 0 :(得分:7)

您的Mac可能正在运行Ruby 1.8而Windows正在运行Ruby 1.9。从1.9开始,默认加载路径不再包含当前目录。通常的做法是在您的require语句之前将其添加到ruby文件的顶部

$LOAD_PATH.unshift File.dirname(__FILE__)
require 'my_file.rb'

您也可以使用简写$:代替$LOAD_PATH

$:.unshift File.dirname(__FILE__)

另一种方法是在命令行添加加载路径:

ruby -I. my_ruby_file.rb

答案 1 :(得分:3)

好的,我现在明白自1.9.2以来出于“安全”的原因,他们不再允许这样的工作了。我发现奇怪地解决它的最好方法是在每个要求前加上'./'。

e.g。

require "./myfile.rb"

答案 2 :(得分:0)

从{1.9}中删除的

"."已从Ruby 1.9.2中删除。做

$:
如果您不相信我,请在Ruby 1.8(Mac上安装了什么)和Ruby 1.9.2(Windows机器上安装了什么)上进行操作。

Why does Ruby 1.9.2 remove "." from LOAD_PATH, and what's the alternative?讨论了为什么“。”被删除了。