Включите полную обратную трассировку в Ruby on Rails TestCase

При запуске отображается только одна строка обратной линии:

rake test

Вывод:

...

ERROR should get search for keywords (1.93s) 
  NoMethodError: undefined method `features' for #<Transcript:0x00000006243780>
  /usr/lib/ruby/gems/1.9.1/gems/activemodel-3.1.0/lib/active_model/attribute_methods.rb:385:in `method_missing'

...

Мне нужно больше строк информации о возврате. Я пробовал

  • rake test --trace

  • Rails.backtrace_cleaner.remove_silencers! в config/initializers/backtrace_silencers.rb

  • установка глобальных $DEBUG = true

и это не сработало.

Как включить его?

Ответ 1

BACKTRACE=blegga rake test

BACKTRACE=blegga rails test # rails 5+

Добавить --trace, если вам нужен журнал, связанный с рейком.

Ответ 2

Наконец понял это. Проблема заключается в том, что камень "turn" включен в Rails 3.1 или на самом деле с поворотом v0.8.2, который требуется по умолчанию Gemfile:

group :test do
  # Pretty printed test output
  gem 'turn', '0.8.2', require: false
end

Поворот v0.8.2 не включает полную обратную трассировку, поэтому вам нужно обновиться, чтобы получить ее. Я сделал это, изменив приведенное выше в моем Gemfile:

group :test do
  # Pretty printed test output
  gem 'turn', require: false
  gem 'minitest'
end

(Мне пришлось добавить minitest, потому что в противном случае он вызывает бросок RuntimeError, говорящий, что "MiniTest v1.6.0 устарел".)

Затем я запустил bundle update turn и получил последний вариант (0.9.2 на момент написания этой статьи). Это дает полные отступления.