Рубиновый миксин дает неопознанную постоянную ошибку - PullRequest
8 голосов
/ 14 марта 2010

В IRB я делаю это

class Text
  include FileUtils
end

Я получаю: NameError: неинициализированная константа Test :: FileUtils

Если я просто сделаю это: включите FileUtils (т. Е. Теперь класс), все работает.

Что дает?

Ответы [ 3 ]

17 голосов
/ 14 марта 2010

Вы должны убедиться, что Ruby знает о модуле FileUtils. Этот модуль не загружен по умолчанию:

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

Не беспокойтесь об ошибке NameError: uninitialized constant Text::FileUtils - когда вы пытаетесь включить константу, о которой Руби не знает, она выглядит в нескольких местах В вашем случае сначала он будет искать Text::FileUtils, а затем он будет искать ::FileUtils в корневом пространстве имен. Если он нигде не может его найти (что в вашем случае не может), то в сообщении об ошибке будет указано первое место, где он выглядел.

1 голос
/ 12 января 2015

Это старая ветка, но все же, если есть какие-то неровности в этой ветке, чтобы найти ответ. Нужно просто добавить нижнюю строку поверх своего кода (или где-нибудь за пределами класса / метода / модуля)

require 'fileutils'

Включение в класс не работает, возможно, оно используется для работы в более старых версиях.

1 голос
/ 14 марта 2010

Вы пробовали?

class Text
  include ::FileUtils
end

Предполагается, что FileUtils находится за пределами модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...