Unit tests are often useless and give you no confidence about software behavior.
The ancestors method returns an ordered list of classes and modules that corresponds with the method lookup sequence.
Googling for 3 hours on how to manipulate the DSL of a Ruby Gem does not count towards your 10,000 hours.
Repeatedly studying concepts is the best way to store information in long term memory and practice retrieving the information.
Each question is stand-alone and not dependent on other questions.
Here's how I'd approach it at a high level.