Я как то отчет новый делал на основе старого, логика 1 в 1 просто в одном случае агрегация по часам а во втором по id. Ну и прослоупочил и забыл поменять инициализацию со списка на словарь. А руби сцуко ж умный, он при доступе по индексу выходящему за размер сам список расширяет. В итоге когда пошли реальные id то приходил добрый OOM killer