What's wrong with these?


#1

Version: ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
Is there something wrong with this version?

1:
Dir.foreach("/tmp") {|f| puts f if File.directory?(f) }
– it just prints ‘.’ and ‘…’

2:
puts Dir.tmpdir
Dir.mktmpdir { |i| puts i }
– it says ‘undefined method’


#2

Humphrey Alba wrote:

Version: ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
Is there something wrong with this version?

1:
Dir.foreach("/tmp") {|f| puts f if File.directory?(f) }
– it just prints ‘.’ and ‘…’

Have you checked to see if you do have directories inside /tmp other
than ‘.’ and ‘…’?

2:
puts Dir.tmpdir
Dir.mktmpdir { |i| puts i }
– it says 'undefined
As for “undefined method” you’re quite right, I can’t find Dir#tmpdir
defined anywhere either, and yet it’s in the docs…what’s the deal
guys?

=======================================================================
This email, including any attachments, is only for the intended
addressee. It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
altered or corrupted during transmission.


#3

Michael M. wrote:

Humphrey Alba wrote:

Version: ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
Is there something wrong with this version?

1:
Dir.foreach("/tmp") {|f| puts f if File.directory?(f) }
– it just prints ‘.’ and ‘…’

Have you checked to see if you do have directories inside /tmp other
than ‘.’ and ‘…’?

Yes, there are directories inside /tmp


#4

Nobuyoshi N. wrote:

Hi,

At Mon, 6 Apr 2009 11:03:09 +0900,
Michael M. wrote in [ruby-talk:333071]:

2:
puts Dir.tmpdir
Dir.mktmpdir { |i| puts i }
– it says 'undefined
As for “undefined method” you’re quite right, I can’t find Dir#tmpdir
defined anywhere either, and yet it’s in the docs…what’s the deal guys?

require ‘tmpdir’

Thanks.


#5

Humphrey Alba wrote:

Dir.foreach("/tmp") {|f| puts f if File.directory?(f) }
– it just prints ‘.’ and ‘…’

Dir.foreach("/tmp") {|f| puts f if File.directory?("/tmp/#{f}") }
or
Dir.chdir("/tmp") do
Dir.foreach(".") {|f| puts f if File.directory?(f) }
end
or
Dir.glob("/tmp/") {|f| puts f if File.directory?(f) }
or
Dir.glob("/tmp/
/") {|f| puts f}
or
puts Dir.glob("/tmp//")
or
puts Dir["/tmp/
/"]

The glob-ones will not include hidden directories or . and … and they
will
print the full-path to the dir (though you could also use chdir with
glob, if
you don’t want the full path).

HTH,
Sebastian


#6

Hi,

At Mon, 6 Apr 2009 11:03:09 +0900,
Michael M. wrote in [ruby-talk:333071]:

2:
puts Dir.tmpdir
Dir.mktmpdir { |i| puts i }
– it says 'undefined
As for “undefined method” you’re quite right, I can’t find Dir#tmpdir
defined anywhere either, and yet it’s in the docs…what’s the deal guys?

require ‘tmpdir’


#7

On 06.04.2009 03:39, Humphrey Alba wrote:

Version: ruby 1.9.1p0 (2009-01-30 revision 21907) [i686-linux]
Is there something wrong with this version?

1:
Dir.foreach("/tmp") {|f| puts f if File.directory?(f) }
– it just prints ‘.’ and ‘…’

This is because of what Dir.foreach returns:

http://www.ruby-doc.org/core/classes/Dir.html#M002327

Hint: paths are missing.

2:
puts Dir.tmpdir
Dir.mktmpdir { |i| puts i }
– it says ‘undefined method’

Well, what do you conclude from that?

Kind regards

robert


#8

On Sun, 05 Apr 2009 21:19:04 -0500, Nobuyoshi N. wrote:

guys?

require ‘tmpdir’

Yeah. The core rdoc on http://www.ruby-doc.org/ has a pitfall that it
includes the standard libraries as well. (Nobody separated out the
standard libraries from that.)

If you want to know what’s in the core, getting a copy of PickAxe is a
better bet.

–Ken