Удаление драгоценного камня better_errors
устраняет эту проблему.Теперь я получаю:
Completed 500 Internal Server Error in 1674ms (ActiveRecord: 50.4ms)
undefined method `sites' for #<Class:0x000055a38ef961b8>
ActionView::Template::Error (undefined method `sites' for #<Class:0x000055a38ef961b8>):
1: $('#sites_panel').html('<%= escape_javascript render partial: ...
activerecord (5.1.6) lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/home/user/dev/engine/app/services/update_site_assigned_to_study.rb:30:in `site'
etc.
etc.
Причина, по которой это работает, заключается в том, что Rails.backtrace_cleaner
отфильтровывает все строки.Это связано с тем, что комбинация фильтров и глушителей в Rails :: BacktraceCleaner в конечном итоге приводит к удалению строк из механизма, в котором возникают ошибки, поскольку он находится вне корня Rails.
Обычно, как в этом случае, когдавсе строки были отфильтрованы с помощью очистителя backtrace ActionDispatch::DebugExceptions#log_error
будет отображать полную обратную трассировку как отступление к ничего не отображать.
Однако при использовании better_errors
обычный код Rails, в #log_error
, не отображаетсяназываться.Я предполагаю, что better_errors
обезьяна исправляет Rails.В любом случае better_errors
использует Rails.backtrace_cleaner
фильтрацию всех строк без отступления для случая, когда все строки были отфильтрованы.