eachなどで繰り返しをする際に2回目以降、最後に代入した変数を使用して配列の中から一つをランダムに除外したものを表示したいのですがなかなか上手くいきません。
以下のようにしているのですが、繰り返し2回目になるとエラーが出てしまいます。

(1..5).each do |num|
    if(num - 1 == 0)
        puts "1回目"
        no_fruits = nil
    else
        puts num.to_s << "回目"
        no_fruits = no
    end

fruit1 = "apple"
fruit2 = "orange"
fruit3 = "strawberry"
fruit4 = "kiwi"
fruit5 = "cherry"
fruit6 = "banana"
fruit7 = no_fruits

all = [fruit1, fruit2, fruit3, fruit4, fruit5, fruit6, fruit7 ].reject {|item| item == fruit7 }
p all

no = all.sample
p no
end

結果↓

1回目
["apple", "orange", "strawberry", "kiwi", "cherry"]
"strawberry"
2回目
Traceback (most recent call last):
        2: from test.rb:12:in `<main>'
        1: from test.rb:12:in `each'
test.rb:18:in `block in <main>': undefined local variable or method `no' for main:Object (NameError)
Did you mean?  not

となり上手くいきませんでした。
一応以下のようにすればそれっぽいことはできましたが、無理やりやっている感じがします。

(1..5).each do |num|
    if(num - 1 == 0)
        puts "1回目"
        fruit1 = "apple"
        fruit2 = "orange"
        fruit3 = "strawberry"
        fruit4 = "kiwi"
        fruit5 = "cherry"
        fruit6 = "banana"
    else
        puts num.to_s << "回目"
        fruit1 = "apple"
        fruit2 = "orange"
        fruit3 = "strawberry"
        fruit4 = "kiwi"
        fruit5 = "cherry"
        fruit6 = "banana"
        fruit7 = [fruit1, fruit2, fruit3, fruit4, fruit5, fruit6].sample
        puts "除外 = " << fruit7
    end

all = [fruit1, fruit2, fruit3, fruit4, fruit5, fruit6, fruit7].reject {|item| item == fruit7 }
p all
end

もっと他に良いやり方があればぜひ教えて頂きたいです。