From: Justin Collins Date: 2011-05-28T11:14:08+09:00 Subject: Re: Variable scopes with code blocks. On 05/27/2011 03:22 PM, Patrick Lynch wrote: > Hello! > > Novice here. I'm reading Beginning Ruby and Beginning Rails by Apres and > building both applications they walk you through. Additionally, I'm > taking courses at lynda dot com and attempting to build a simple > application myself. > > That said, I'm aware of the limits you have with local variable being > incapable of accessing variables defined inside of a code block, but is > there any exception to this rule? > > Example: > _____________ > > 1.times do > File.open("text.txt").each {|a| puts a} > end > > puts a > # This where I get my error. > _____________ > > Is there anything I can do to 'puts a' that will allow it to return the > content it was passed inside of the code block? > > Ultimately, I'd like to store the 'text.txt' as an array so I can call > .uniq! on it... But we don't need to get into that in this thread. > > I hope my question makes sense. > > Thank you in advanced, > Aaron > In light of your ultimate goal, consider using File.readlines("text.txt") [1]. Also note that in your example you are opening the file without ever closing it. If you pass a block to File.open(), it will ensure the file is closed [2]. [1] http://rdoc.info/stdlib/core/1.9.2/IO.readlines [2] http://rdoc.info/stdlib/core/1.9.2/File.open -Justin