Gem railsconfig/config не загружается при подключении к приложению через монтируемый движок rails
Я пишу движок rails 5.2 для настройки приложения rails как части сервис-ориентированной архитектуры.
Я пытался использовать Config Gem внутри движка и получаю следующую ошибку
install_generator.rb:28:in 'create_database_yml': undefined method 'adapter' for nil:NilClass (NoMethodError)
Это потому, что я пытаюсь создать генератор, который делает правильно сконфигурированный файл database.yml на основе значений, интерполированных через гем Config в строку, которая копируется в файл. Метод, вызывающий ошибку, приведен ниже, а полный код модуля генератора также приведен ниже.
def create_database_yml
database_name = Rails.application.class.parent_name.underscore.gsub("_","-")
create_file('config/database.yml',
%{default: &default
adapter: 'Settings.database.adapter'
encoding: unicode
pool: <%= ENV['RAILS_MAX_THREADS'] || 5 %>
prepared_statements: false
development:
<<: *default
database: #{database_name}_dev
production:
<<: *default
}
)
end
Я включил гем в проект rails, и когда я запускаю генератор, я получаю ошибку, о которой упоминал выше.
Вы можете увидеть полную трассировку стека ниже.
Когда я открываю консоль рельсов и вызываю Settings
объект
... (который является псевдонимом для Config
объект, который является ядром драгоценного камня.)
Я получаю действительный Settings
объект вернулся в консоль. Это позволяет мне знать, что Settings
объект доступен в приложении rails, которое запускает мой движок.
Однако ошибка заставляет меня полагать, что призыв к Settings
возвращает действительный объект... затем вызов .database
возвращает ноль И тогда мы получаем эту знаменитую ошибку рельсов undefined method for nil:NilClass
Мой файл settings.yml для драгоценного камня правильно отформатирован, поэтому нет никаких причин, по которым этот синтаксис не будет работать, так как я использую драгоценный камень почти в каждом проекте, поэтому я хорошо осведомлен о его возможностях и о том, как его использовать.
database:
adapter: 'postgresql'
Это только наводит меня на мысль, что по каким-то причинам гем настроек не загружает файлы.yml, как следует. Возможно, пути загрузки испорчены, или, возможно, гем конфигурации загружается не в то время, когда движок встроен в приложение.
Любой, кто имеет какую-либо информацию о том, как правильно заставить этот драгоценный камень работать в движке, был бы очень признателен.
это суть полной трассировки стека