Windows 上的 Ruby 目录中的 require 路径不起作用

发布于 2024-12-16 19:32:15 字数 197 浏览 0 评论 0原文

我有一个小型 ruby​​ 程序,需要同一目录中的文件。程序在我的 Mac 上完美运行,当我在没有任何要求的情况下运行测试 ruby​​ 脚本时,它也可以正常运行。默认情况下,ruby 程序似乎不会在当前目录中查找该文件。例如 . 目录。在 Windows 中,我需要在哪里更新它,以便 ruby​​ 确实在当前目录中查找需求?

I've a small ruby program that require files in the same directory. Program works perfect on my mac and when I run a test ruby script without any require it also works so. It seems the ruby program doesn't look in the current directory for the file by default. e.g. the . dir. In windows where do I need to update this so ruby does look in the current dir for requires?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美人骨 2024-12-23 19:32:15

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

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

您还可以使用简写 $: 而不是 $LOAD_PATH

$:.unshift File.dirname(__FILE__)

另一种选择是添加改为在命令行上加载路径:

ruby -I. my_ruby_file.rb

Chances are that your Mac is running Ruby 1.8 and Windows is running Ruby 1.9. As of 1.9, the default load path no longer includes the current directory. A common practice is to add this to the top of your ruby file before your require statements

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

You can also use the shorthand $: instead of $LOAD_PATH:

$:.unshift File.dirname(__FILE__)

Another alternative is adding the load path on the command line instead:

ruby -I. my_ruby_file.rb
你爱我像她 2024-12-23 19:32:15

好吧,我现在明白了,从 1.9.2 开始,出于“安全”原因,他们不再允许 require 那样工作。我发现解决这个奇怪问题的最巧妙的方法是将“./”放在每个需求前面。

例如

require "./myfile.rb"

Ok, I understand now since 1.9.2 for "Security" reasons they don't allow require to work like that anymore. The neatest way I found to solve it strangely was to put './' in front of every require.

e.g.

require "./myfile.rb"
庆幸我还是我 2024-12-23 19:32:15

"." 已从 $: 中删除,准确地说,已从 Ruby 1.9.2 中删除。 执行此操作

puts RUBY_VERSION
puts $:.inspect

如果您不相信我,请在 Ruby 1.8(Mac 上安装的内容)和 Ruby 1.9.2(Windows 计算机上安装的内容)上

为什么 Ruby 1.9.2 去掉“.”来自 LOAD_PATH,还有什么选择? 讨论了为什么“.”被删除。

"." was removed from $: was removed from Ruby 1.9.2 to be precise. Do

puts RUBY_VERSION
puts $:.inspect

on Ruby 1.8 (what's installed on your Mac) and Ruby 1.9.2 (what's installed on your windows machine) if you don't believe me.

Why does Ruby 1.9.2 remove "." from LOAD_PATH, and what's the alternative? discusses why "." was removed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文