Да, вы совершенно правы. В настоящее время способ, которым вы его определяете, вы можете оценить метод с помощью:
PrimeChecker.new.print_em
Причина, по которой def self.my_awesome_method
определяет его на стороне класса, заключается в том, что вещи внутри
class MyAwesomeClass
end
выполняется в контексте MyAwesomeClass
. Это все код Ruby, как вы можете видеть! Это позволяет вам делать такие вещи:
class MyAwesomeClass
puts "Hello from innards of #{self}!" #=> Hello from the innards of MyAwesomeClass!
end
Определения методов также будут работать, только если вы называете их после местоположения определения, например:
class MyAwesomeClass
my_awesome_method # produces a nasty error
def self.my_awesome_method
puts "Hello world"
end
my_awesome_method # executes just fine
end
Надеюсь, это прояснит некоторые вещи.