Неинициализированная постоянная ошибка Ruby при загрузке всех файлов в каталоге - PullRequest
2 голосов
/ 31 января 2012

Я пытаюсь загрузить все файлы ruby ​​в каталоге из файла Ruby, используя этот код:

Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |r| load r }

Однако в этом каталоге у меня есть Class Bar, который наследуется от Class Foo.

Class Bar < Foo

Когда я запускаю свою программу, я получаю сообщение об ошибке: неинициализированная константа Foo (NameError).

Я думаю, это потому, что он пытается загрузить класс Bar, но еще не загрузил класс Foo.

Я пытался явно запросить Foo внутри бара, но тогда я получу предупреждения, поскольку Foo будет загружен дважды.

Как мне загрузить все файлы в каталоге таким образом, чтобы для него автоматически требовались все необходимые файлы.

1 Ответ

1 голос
/ 31 января 2012

Поскольку нет реального способа установить порядок, в котором файлы требуются при использовании цикла, вам сначала нужно require файл, который определяет Foo, перед вашим циклом.

require "./pages/file_that_defines_foo.rb"
Dir["#{File.dirname(__FILE__)}/pages/*_page.rb"].each { |r| load r }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...