What's wrong with these?

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'

···

--
Posted via http://www.ruby-forum.com/.

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.

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

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

···

On 06.04.2009 03:39, Humphrey Alba wrote:

Hi,

At Mon, 6 Apr 2009 11:03:09 +0900,
Michael Malone 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'

···

--
Nobu Nakada

Michael Malone 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

···

--
Posted via http://www.ruby-forum.com/\.

Nobuyoshi Nakada wrote:

Hi,

At Mon, 6 Apr 2009 11:03:09 +0900,
Michael Malone 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.

···

--
Posted via http://www.ruby-forum.com/\.

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

···

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

Hi,

At Mon, 6 Apr 2009 11:03:09 +0900,
Michael Malone 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'

--
Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/