В Ruby определения функций - это операторы, которые выполняются точно так же, как другие операторы, такие как присваивание и т. Д. Это означает, что до тех пор, пока интерпретатор не выполнит ваш оператор "def check_data", check_data не существует. Поэтому функции должны быть определены до их использования.
Один из способов - поместить функции в отдельный файл "data_functions.rb" и указать его в начале:
require 'data_functions'
Если вы действительно хотите, чтобы они были в одном файле, вы можете взять всю свою основную логику и обернуть ее в свою собственную функцию, а затем вызвать ее в конце:
def main
groups = ...
check_data
save_data_in_database
end
def check_data
...
end
def save_data_in_database
...
end
main # run main code
Но обратите внимание, что Ruby является объектно-ориентированным, и в какой-то момент вы, вероятно, в конечном итоге будете оборачивать свою логику в объекты, а не просто писать одинокие функции.