Tom Cloyd
3/15/2008 2:21:00 PM
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)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~