[1,0,-1,0].cycle {|x| puts x} #無限
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定

cycle再発明したいならEnumeratorを返す方法を学ぶ