2016-04-04 4 views
1

I имеют следующую структуру каталогов:RSpec не загружает рельсы приложения подкаталоги

app 
├── consumers 
│   └── consumers 
│    ├── foo.rb 
... 

Я ожидаю, что foo потребитель будет автоматически включен в рельсах autoload_paths, но когда я смотрю на конфигурации в спецификации:

MyApp::Application.config.autoload_paths 
=> [#<Pathname:/home/myapp/lib>] 

Любая идея, что происходит?

Явного добавления каталога решает проблему:

config.autoload_paths << Rails.root.join('app/consumers')

ответ

1

Поскольку это app/consumers не путь нагрузки по умолчанию, он не будет установлен, если явно не указать его в application.rb. Вы уверены, что config.autoload_paths << Rails.root.join('app/consumers') присутствует в application.rb?

+0

все подкаталоги под 'app' должны быть автоматически добавлены в autoloads_path, так как rails 4 –

0

Вы можете получить доступ к списку всех autoload_paths (оба явно добавлены в config/application.rb и те, что были добавлены самими Rails по умолчанию), вызывая ActiveSupport::Dependencies.autoload_paths.

MyApp::Application.config.autoload_paths будет содержать только набор путей, которые были определены в config/application.rb. Эти пути фактически получают prepended into a the default set of paths, определяемые рельсами во время инициализации.

+0

Спасибо, я не знал об этом! Однако я удивляюсь, что папка 'app/consumer' не находится в' autoload_paths' уже, как это должно быть https://github.com/rails/rails/blob/v4.2.6/railties/lib/rails/engine/ configuration.rb # L42 –

+0

Если вы запустили bin/rails r, то из командной строки ActiveSupport :: Dependencies.autoload_paths'' находится папка 'app/consumer', включенная в список? Также, если вы хотите получить доступ к путям, которые инициализируются кодом, который вы связали, вам нужно запустить 'Rails.application.paths' в консоли. –

+0

Если вам нужна дополнительная информация о том, как автозагрузка и перезагрузка работает в Rails, я всем сердцем рекомендую главу «Руководства по Rails» по теме http://guides.rubyonrails.org/autoloading_and_reloading_constants.html –

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