Причиной возникновения проблем является то, что Ruby обычно принимает все имена, начинающиеся с заглавной буквы, как константы. Однако это также позволит вам определять методы с именем, начинающимся с заглавной буквы. Происходит следующее:
- Ruby видит
def LookAtCut
и правильно определяет метод с именем LookAtCut
- Внутри
LookAtCut
Руби видит TrySlot
, предполагает, что это константа, пытается найти ее и завершается ошибкой, поскольку она не была определена.
Решение состоит в том, чтобы не использовать имена методов, начинающиеся с заглавных букв. Затем вы можете использовать метод, который еще не был определен внутри другого:
def a
b
end
def b
puts "Hello!"
end
a #=> "Hello!"