В настоящее время я получаю сообщение об ошибке, которое выглядит следующим образом:
NoMethodError: undefined method `debug' for nil:NilClass
/mnt/hgfs/Dropbox/Company/Project/lib/project/misc.rb:23:in `debug'
/mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:49:in `block in compare_addresses'
/mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:43:in `each'
/mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:43:in `compare_addresses'
/mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:32:in `valid?'
/mnt/hgfs/Dropbox/Company/Project/specs/project/validation/google_geocoding_validation_engine_spec.rb:56:in `block (2 levels) in <module:Validation>'
/home/tomas/ruby2/lib/ruby/2.0.0/minitest/unit.rb:1301:in `run'
Я решил попробовать использовать byebug, чтобы выяснить, почему объект nil
, поскольку он никогда не должен быть nil
. Я поставил byebug
чуть выше ошибочной строки:
def debug(&block)
if @logger.nil?
byebug
end
@logger.debug(@logger_name, &block)
end
И провел тесты. Я попал в интерфейс отладки byebug и смог подтвердить, что объект действительно был nil
. Проблема в том, что я не могу подняться по стеку:
(byebug) up
*** Adjusting would put us beyond the oldest (initial) frame.
(byebug) down
*** Adjusting would put us beyond the newest (innermost) frame.
(byebug) backtrace
--> #0 AddressKit::Misc::Logging.debug(block#Proc) at /mnt/hgfs/Dropbox/Kvantel/Address Kit/lib/addresskit/misc.rb:25
Warning: saved frames may be incomplete; compare with caller(0)
Почему я не могу подняться по стеку? Это проблема с byebug или, возможно, несовместимость с MiniTest?