Ruby on Rails: нет тела ответа API после доступа к ActionController :: API в инициализаторе

#ruby-on-rails #ruby #actioncontroller

#ruby-on-rails #ruby #actioncontroller

Вопрос:

Я пытаюсь реализовать пользовательский драгоценный камень ведения журнала (в значительной степени основанный на lograge).

В методе, который вызывается из инициализатора, у меня есть некоторая логика для добавления к полезной нагрузке, которая передается process_action.action_controller событию, которая выглядит примерно так:

 def self.add_custom_payload
  base_classes = [ActionController::Base, ActionController::API]
  base_classes.each do |base_class|
    # logic that adds stuff to payload
  end
end
 

После добавления этого, когда я делаю какие-либо запросы к своему API (приложение, которое я использую для тестирования этого, использует ActionController::API ), я всегда получаю пустое тело в ответ. Код состояния HTTP и заголовки соответствуют ожиданиям.

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

 def self.add_custom_payload
  ActionController::API
end
 

в методе, который вызывается из инициализатора, происходит то же самое, и все запросы возвращают пустое тело ответа.

Я в тупике. Что является причиной этого?

TL; DR: если я обращаюсь ActionController::API к инициализатору, все ответы имеют пустое тело.

Комментарии:

1. Любая причина, по которой вы не используете append_info_to_payload . api.rubyonrails.org/classes/ActionController /…

2. Или просто создать часть промежуточного программного обеспечения и поместить его между маршрутизатором и контроллером.