formal argument cannot be an instance variable: In ruby1.8 it’s possible to use an instance variable as a block argument: class Foo attr_accessor :bar def test [1,2,3].each {|@bar| } # @bar will be 3 here end end This no longer works in ruby1.9, you as it always creates a new local variable block argument. The equivalent in ruby1.9: class Foo attr_accessor :bar def test [1,2,3].each {|bar| @bar=ba