Ruby の if, unless, while, until は修飾子として使えますが、
puts i if (i = 1) #=>NameError: undefined local variable or method `i' for main:Object
はこれ以前の行に i が出てこないかぎり、エラーなのですね。しかし
i = 0 puts i if (i = 1) #=>1
はエラーでないので使いましょう。if でなくても同じです。こんな無限ループも書けます。
i = 0 puts i while (i += 1)
便利ですね、修飾子。