В приложении Rails (Rails 6) я создал каталог в корне приложения rails - вне папки /app
. Я хочу попытаться сохранить некоторую логику за пределами веб-фреймворка Rails.
- rails_root
- app/
- models/
- controllers/
- lib/
- tasks/
- my_domain/
- check_record.rb
файл check_record.rb
module MyDomain
module CheckRecord
def self.call(record)
end
end
end
Теперь я не могу автоматически загружать этот каталог в среде тестирования (RSpec) и разработки (консоль rails).
Когда пытаюсь в application.rb
config.autoload_paths += %W(#{config.root}/my_domain)
Тесты завершаются неудачно из-за неинициализированной константы #Class: 0x00007f96e1f1ad90 :: MyDomain
Получение той же ошибки при попытке доступа к классам в консоли rails
Когда пробую в application.rb
config.paths.add "my_domain", eager_load: true, glob: "**/*.rb"
Я вижу, что все файлы из этой папки регистрируются в Rails.configuration.eager_load_paths
, но тесты не проходят с тем же сообщением об ошибке
Когда я перемещаю этот код в выделенный класс инициализатора, тот же вывод или при запуске консольного инициализатора Rails не загружается вообще.
Использование типов доменов:
class MyRecord < ApplicationRecord
def check
MyDomain::CheckRecord.call(self)
end
end
Как я могу загружать или автоматически загружать каталог с рубиновыми файлами вне папки /app
?