Gem railsconfig / config не загружается при подключении к приложению через монтируемый движок rails - PullRequest
0 голосов
/ 24 июня 2018

Я пишу монтируемый движок 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

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

Вы можете увидеть полную трассировку стека ниже.

Когда я открываю консоль рельсов и вызываю Settings, объект

... (который является псевдонимом для объекта Config, который является ядром драгоценного камня).

Я получил действительный объект Settings, возвращенный в консоли.Это позволяет мне узнать, что объект Settings доступен в приложении rails, которое запускает мой движок.

Однако ошибка заставляет меня поверить, что вызов Settings возвращает действительный объект ... тогда вызов .database возвращает ноль.И затем мы получаем эту известную ошибку rails undefined method for nil:NilClass

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

database:
  adapter: 'postgresql'

Это только наводит меня на мысль, что по каким-то причинам гем настроек не загружает файлы .yml, как следует.Возможно пути загрузки перепутаны, или, возможно, гем конфигурации загружается не в то время, когда движок встроен в приложение.

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

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

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

...