Dir.each 路径在 Textmate 中无法正常工作 (Ruby)

Dir.each paths not working properly in Textmate (Ruby)

当我运行:

Dir.entries('.').each do |i|
    puts i 
end

在 texmate 中,我从父目录中打印出来。这是为什么?

当我在 IRB 中 运行 相同的代码时,或者只是从终端我得到正确的目录。

如何更正 textmate 路径?

您不应依赖当前目录的默认设置。假设您有一个 ruby 文件 /tmp/a.rb,其内容为:

Dir.entries('.').each do |i|
    puts i 
end

是否执行为:

cd ~ && ruby /tmp/a.rb

它将打印 /user/YOURUSERNAME 的内容,因为当前目录就是执行代码的目录。 Textmate 可能会设置它自己的当前目录,从哪里执行它等等。

要解决问题,请使用 Dir.chdir 明确设置当前目录。