Ruby on Rails в режиме разработки по умолчанию перезагружает исходные файлы при каждом запросе. Поскольку вы сохраняете состояние «программы» в переменных класса, эти изменения стираются при перезагрузке классов.
Кстати, переменные класса обычно используются с большой осторожностью, так как они по сути глобальные. Особенно в веб-приложении Rails. Сохраните любое состояние в базе данных, а не в контексте ваших классов.
Обновление:
Помните, что процессы веб-сервера обычно не сохраняют состояния. Кроме того, у вас обычно работает несколько процессов, что означает, что ваш счетчик будет отличаться между запросами в зависимости от того, какой процесс ответит на запрос. Кроме того, процессы могут быть перезапущены, что означает, что ваш счетчик будет потерян.
В Rails, если что-то непростое, это обычно означает, что вы пытаетесь сделать то, что не должны делать :)
Если вы действительно не хотите использовать БД, и если счетчик не должен быть глобальным для всех посетителей вашей страницы, вы можете попробовать сохранить счетчик в cookie: http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html