Передача нескольких аргументов в промежуточное ПО Rack в приложении Rails.rb

Я создаю промежуточное программное обеспечение для стойки, которое хочу использовать в своем приложении Rails. По сути, мне нужно регистрировать запросы, соответствующие определенным URL-адресам в моей базе данных. Для этого мне нужно передать конфигурацию базы данных в Middleware, чтобы он мог установить соединение с БД. Я пытаюсь сделать:-

db_yml = Rails.root.join('config/database.yml')
db_config = YAML.load(db_yml.read)[Rails.env]

Но это дает ошибку

конфиг /application.rb:40: в <class:Application>': undefined methodчитать 'для # (NoMethodError)

Если я добавляю byebug и запускаю то же самое в консоли beebug, все работает нормально. Я не могу выяснить, почему. Я хочу сделать следующие вещи:-

  1. Мне нужно прочитать и изменить конфигурацию базы данных, прежде чем передать ее промежуточному программному обеспечению в качестве аргумента.
  2. Я хочу прочитать домен запроса URL. Мы используем Apartment gem, и именем нашей схемы будет доменное имя.

Я следил за несколькими статьями здесь и здесь. Я новичок в Rails и не знаю хороших ресурсов, поэтому, пожалуйста, помогите. Заранее спасибо!

1 ответ

Вы должны использовать:

db_yml = Rails.root.join('config/database.yml')
db_config = YAML.load(File.open(db_yml))[Rails.env]

Rails.root.join('config/database.yml') вернуть путь к файлу, который является строкой.

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