Hi,

In message "[ruby-talk:6012] Exception handling"
    on 00/11/03, David Suarez de Lis <excalibor / demasiado.com> writes:

|from the User's Manual:
|http://www.math.sci.hokudai.ac.jp/~gotoken/ruby/ruby-uguide/uguide25.html
|
|ruby> begin
|ruby|   file = open("/tmp/some_file", "w")
|ruby|   # something to do
|ruby| ensure
|ruby|   file.close
|ruby| end
|
|Let's suppose /tmp/some_file does not exist: then I get, from the ensure part: 
|
|NameError: undefined method `close' for nil
|
|Obviously, as open has failed in opening the file, 'file' references 'nil'...
|
|How do we cope with this kind of things?

It should have been:

  file = open("/tmp/some_file", "w")
  begin
    # something to do
  ensure
    file.close
  end

or even:

  open("/tmp/some_file", "w") do |file|
    # something to do
  end

The user guide was written almost 5 years ago; and I was not an
experienced Ruby programmer then ;-)

|PS- The documentation is great, and the library reference is superb,
|but many manuals, etc, are lagging behind the code... most are for
|ruby 1.4... eg. I saw an 'include Singleton' somewhere to create a
|singleton class, where in 1.4 that was done with 'class <<
|single'. Is there any updated documents like the Reference Manual for
|1.4 updated? While I still love _The Pragmatic Programmer_ by Dave
|and Andy, even after some 100 readings, at the current Euro rate,
|getting the Ruby book is off the question by now... thn

It's been in my todo list for long time;  I wish I had two (or even
more) individual souls.  Maybe I should setup RWiki to build
up-to-date references.

							matz.