Надеюсь, у тебя хороший день. Итак, у меня есть эта странная ошибка, которая надрала мне задницу, и я не уверен, где она находится, ради всего святого.
У меня есть ViewComponent, который обычно отображается внутри представления, т. е. *.html.erb. Например,
<%= render Contact::Avatar.new(
contact:,
size: :xl,
) %>
Все в порядке, компонент рендерится успешно, без проблем. Проблема возникает, когда в компоненте есть ошибка, любые ошибки, возникающие внутри компонента при передаче его в функцию render, проглатываются, и вместо того, чтобы поднимать ошибку как следует, ошибка проглатывается и возвращается пустая строка, что мешает мне от знания того, что не так. Например, если представление компонента ссылается на неопределенную переменную, внутри contact/avatar_component.html.erb я поднимаю ArgumentError просто ради тестирования.
<% raise ArgumentError %>
<% if u/contact.draft? %>
<%= render AvatarComponent.new @contact, color: Color.indigo, **@options %>
<% else %>
<% if @contact.name.strip.blank? || @contact.discarded? %>
<%= render AvatarComponent.new @contact, **@options %>
<% else %>
<%= render AvatarComponent.new @contact, text: @contact.abbreviated_name, **@options %>
<% end %>
<% end %>
И ошибка фиксируется функцией render.
Однако, если ошибка возникает в файле Ruby, т.е.
class Contact::Avatar < ViewComponent::Base
def initialize(contact:, **options)
@contact = contact
@options = options
raise ArgumentError
end
end
ошибка фиксируется и отображается





Не удалось воспроизвести.
ROR проекте с ViewComponent.Некоторые библиотеки могут переопределять некоторые вещи:
https://github.com/ViewComponent/view_comComponent/issues/1981
Большое спасибо! Действительно, причиной этого стал патч NewRelic!