Что в Ruby истинно, а что ложно?
Ложны только nil и false. Всё остальное истинно — включая 0, пустую строку и пустой массив, и именно здесь спотыкаются пришедшие из других языков. Поэтому if items.empty? и if items означают совершенно разное, и второе почти никогда не то, что вы имели в виду.