Ruby require_relative没有加载文件,没有抛出错误

时间:2013-10-04 22:43:46

标签: ruby constants require

我无法通过外部文件加载常量定义。我把问题缩小到以下几点。

require_relative '../../common/config.rb'
A_CONSTANT = 'something'

puts "A_CONSTANT: #{A_CONSTANT}"

当我按照书面形式运行时,它会正确打印消息。在common / config.rb文件中声明了相同的常量。相对路径对于此文件的位置是正确的。为了完整起见,上面的代码位于/watir/dashboard/spec/ex.rb中。常量在/watir/common/config.rb中声明。

正如我所看到的,上面的代码应该输出错误的重复常量声明。它不是。如果我注释掉上面的常量声明并重新运行,则puts语句会显示“未初始化的常量”的错误。任何想法有什么不对?

编辑 - 文件common / config.rb的内容如下。

A_CONSTANT = 'something'

在百灵鸟上,我将文件名更改为common / conf.rb。当我修改require_relative语句以加载重命名的文件时,我得到了我最初期望的结果。文件被加载,第二个常量声明抛出一个警告,说“已经初始化常量”。如果我注释掉第二个声明,则脚本运行完美。

当由相对路径加载时,文件名'config.rb'似乎有些特殊。我在其他脚本中使用该文件名,它与加载脚本或子文件夹位于同一文件夹中。这是我第一次不得不向上移动树来加载它。

1 个答案:

答案 0 :(得分:0)

Ruby允许重新定义常量,并且只会打印警告。你的Ruby中的一些设置只是隐藏了你的警告。