require 'mad_skills'
загружает код в mad_skills.rb (или загружает mad_skills.so/.dll в зависимости от того, какой существует). Вам нужен файл, прежде чем вы сможете использовать классы, методы и т. Д., Определенные в этом файле (хотя в rails файлы автоматически загружаются при попытке получить доступ к классам, имя которых совпадает с именем файла). Помещение require внутри определения класса вообще не меняет его поведение (то есть размещение его в верхней части файла не будет иметь значения).
include MadSkills
берет модуль MadSkills
и включает его в цепочку наследования Applicant
, то есть он делает все методы в MadSkills
доступными для экземпляров Applicant
.
self.send attr
выполняет метод с именем, указанным в attr для self, и возвращает его возвращаемое значение. Например. attr = "hello"; self.send(attr)
будет таким же, как self.hello
. В этом случае он выполняет методы smart
, highly_productive
, curious
, driven
и team_player
и проверяет, что все они возвращают true.