我有一个小的ruby程序,require
文件位于同一目录中。程序在我的Mac上工作得很完美,当我运行测试ruby脚本时没有任何要求它也可以。默认情况下,ruby程序似乎不会在文件的当前目录中查找。例如.
目录。{{1}}在Windows中我需要更新这个,所以ruby会在当前目录中查找需求吗?
答案 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)
"."
已从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?讨论了为什么“。”被删除了。