From: Tom Cloyd Date: 2008-03-15T23:20:45+09:00 Subject: Re: baffling undefined method error David A. Black wrote: > Hi -- > > On Sat, 15 Mar 2008, Dave Thomas wrote: > >> >> On Mar 15, 2008, at 8:24 AM, Tom Cloyd wrote: >> >>> I'm getting an error I can't account for. In a method I've written I >>> open a file and access a yaml store: >>> >>> archive_stored_list = 'archive_stored_list.yml' >>> archives_stored_catalog = File.open(archive_stored_list) {|i| >>> YAML.load(i)} >>> >>> I massage the data a bit, and want to write it back out to the same >>> file. I try to close the file so I can open it for output, but get >>> an error: >>> >>> archives_stored_catalog.close # <= "undefined method `close'" error >>> is written to log file here >>> open(archive_stored_list,"w") {|i| >>> YAML.dump(archives_stored_catalog,i)} >>> >>> Why is this giving an error? Isn't the IO.close method always >>> available? Very confusing. >> >> >> The block form of IO.open returns the value of the block. So, what is >> the class of archives_stored_catalog? It isn't an IO object. It's >> your loaded YAML data. So it doesn't have a close method. > > Yeah, that :-) (I said nil, which was an over-generalization from a > case where the block called puts.) > > > David > OK, thanks, that's very clarifying. I utterly missed the fact that I was using a block open. So, once the data's loaded, the file should be closed, and thus available for re-openning. But it isn't. THAT was my original problem - the reason I was (mistakenly) trying to close it - so I could open it. All this code is in the same method. "archive_stored_list" should be something I can open, but as I said before, upon trying I get a "Permission denied - archive_stored_list.yml" error. I have NO idea why. If I can't open that file, I can't dump my yaml data. Any ideas? t. -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Tom Cloyd, MS MA, LMHC Private practice Psychotherapist Bellingham, Washington, U.S.A: (360) 920-1226 << tc@tomcloyd.com >> (email) << TomCloyd.com >> (website & psychotherapy weblog) << sleightmind.wordpress.com >> (mental health issues weblog) << directpathdesign.com >> (web site design & consultation) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~