Как правильно в ruby вызывать метод изнутри себя для повторного запуска? В приведенном ниже примере, когда @dest_reenter равно yes, я бы хотел, чтобы метод b_stage снова выполнялся
def b_stage if @dest_reenter == 'yes' @dest_reenter = nil b_stage end end
Именно так вы делаете рекурсию, но использование этих переменных экземпляра - не тот путь. Лучшим примером будет что-то вроде этого:
def b_stage(i) if i < 5 puts i i += 1 b_stage(i) end end
Если вы позвоните b_stage(0), вывод будет
b_stage(0)
0 1 2 3 4
Используйте отдельный метод:
def go ... middle_thing(true) end def middle_thing(first_time) next_page unless first_time == true parse_page end def parse_page ...(parsing code) middle_thing(false) end