Hi, I don't understand how we can just call 'logger' from any method,
You can't call it from any method. ActionController::Base,
ActiveRecord::Base and a few others have accessors called logger that
returns a Logger object
so whenever you're in an instance method of an ActiveRecord::Base
subclass you can call it (class methods too - the accessor is defined
on those classes as well). If the object you're writing a method for
doesn't have a logger method then you can't call logger, if it does
you can.
Rails also stores a Logger object in RAILS_DEFAULT_LOGGER, so you can
for instance get access to it in testing by including something this
simple in /test/test_helper.rb:
def logger
RAILS_DEFAULT_LOGGER
end
There may be far better ways to find why tests fail, but tossing in
some
logger.info("wonky_var value: #{wonky_var}")
calls in unit/functional tests and watching what shows up in /log/
test.log is pretty useful.