Передача нескольких аргументов в промежуточное ПО 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, все работает нормально. Я не могу выяснить, почему. Я хочу сделать следующие вещи:-
- Мне нужно прочитать и изменить конфигурацию базы данных, прежде чем передать ее промежуточному программному обеспечению в качестве аргумента.
- Я хочу прочитать домен запроса 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')
вернуть путь к файлу, который является строкой.