Ruby mixin给出了未识别的常量错误

时间:2010-03-14 00:54:50

标签: ruby

在irb中,我这样做

class Text
  include FileUtils
end

我得到:NameError:未初始化的常量Test :: FileUtils

如果我这样做:包括FileUtils(即现在的类)everthing工作。

是什么给出了?

3 个答案:

答案 0 :(得分:17)

您需要确保Ruby了解FileUtils模块。默认情况下不加载该模块:

>> FileUtils
NameError: uninitialized constant FileUtils
    from (irb):1
>> require 'fileutils'
=> true
>> FileUtils
=> FileUtils

不要过于担心错误NameError: uninitialized constant Text::FileUtils - 当你试图包含一个Ruby不知道的常量时,它会在几个地方看起来。在您的情况下,首先它将查找Text::FileUtils,然后它将在根命名空间中查找::FileUtils。如果它无法在任何地方找到它(在您的情况下它不能找到它),那么错误消息将告诉您它看起来的第一个位置。

答案 1 :(得分:1)

你试过吗?

class Text
  include ::FileUtils
end

这假设FileUtils不在模块中。

答案 2 :(得分:1)

这是一个旧线程,但是如果在这个线程上有任何障碍可以找到答案。只需在代码之上(或类/方法/模块之外的任何地方)添加以下行

require 'fileutils'

包含在课程中不起作用,可能会用于旧版本。