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 в строку, которая копируется в файл. Метод, вызывающий ошибку, приведен ниже, а полный код модуля генератора также приведен ниже.

generator.rb

    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, как следует. Возможно, пути загрузки испорчены, или, возможно, гем конфигурации загружается не в то время, когда движок встроен в приложение.

Любой, кто имеет какую-либо информацию о том, как правильно заставить этот драгоценный камень работать в движке, был бы очень признателен.

это суть полной трассировки стека

полная трассировка стека к ошибке

0 ответов

Другие вопросы по тегам