Что в Ruby истинно, а что ложно?
Ложны только nil и false — 0, '' и [] истинны. На этом спотыкаются все, кто пришёл из JavaScript или Python. Значит, if list истинно и для пустого списка, и когда вы имеете в виду «пустой», надо писать list.empty?.