2016-10-30 3 views
1

Вот мой press_post/updater.rb файлЕсть ли способ, чтобы пространство имен класса PORO без модуля

class PressPost::Updater 
    def say_something 
    p 'hello world' 
    end 
end 

Но когда я бег, что я получаю эту «: неинициализированная постоянная PressPost (NameError)

Я знаю, что другие ответы коснулись этого вопроса. Один зашел так далеко, чтобы сделать пустой модуль внутри файла класса в первой строке. Это кажется ошибочным.

Я знаю, что есть способ не делать этого дополнительного кода. Я считаю, что это конфиг или что-то еще, но я не знаю, как это сделать.

Примечание .. Я хочу, чтобы это сделать, потому что они находятся в подкаталоге, и это гораздо проще искать код PressPost :: Updater, чем Updater

+0

См. Также http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#nesting и http://guides.rubyonrails.org/autoloading_and_reloading_constants.html#nesting-and-qualified-constants. –

ответ

-1

Не, если это то, что вы после этого, но я всегда будет обернуть класс в модуль:

module PressPost 
    class Updater 
    def say_something 
     p 'hello world' 
    end 
    end 
end 

Это не совсем соответствует текущему коду, как кто-то указывает out in this answer но это уборщик, который я предполагаю, что вы после.

+0

Включите ли вы каждый из классов в папке в модулях? Мне не нравится, когда нужно обернуть все в модуле .. делает поиск определения класса PressPost :: Updater.new объектов PITA. – baash05

+0

@ baash05 Если вы не получите лучшего ответа, 'ack -files-with-matches Updater', по крайней мере, скажет вам, какие файлы/пути содержат ваш класс, поэтому вы можете расширить свой поиск дальше. –

Смежные вопросы