File.new and non-existent directories

Hi,

I may be wrong, but after some testing it appears to me that when I
attempt to create a new file using File.new in a directory that does not
exist, instead of creating the directory, an exception is thrown
instead.

To give some background, I am archiving an email listserv so it can be
searched. I've given the listserv administrator the ability to upload a
word document which is parsed and converted into a text file, and stored
both in a database and in a folder hierarchy on the filesystem. The
folder hierarchy starts with folders of each year (2001, 2002, etc), and
each year contains one folder per month (05.2004, 10.2004, etc). So
when a listserv posting from May, 2007 is added, it would go to
"somedir/2007/05.2007/posting_name.txt". I've had no problems when the
folder already exists, but I would like it to be able to create the new
directories needed when a posting from a new month or year is added, so
we don't have to continually add new folders to keep things running
smoothly.

Can anyone direct me to a function, flag, or strategy to achieve what I
am looking for?

Thanks,

JT

···

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

You could use Dir::mkdir or FileUtils#mkdir to create a directory
and FileUtils#mkdir_p if you want to create a directory and its
parents directories (if they doesn't exists).

···

On 6/13/07, JT Kimbell <jtkimbell@yahoo.com> wrote:

I may be wrong, but after some testing it appears to me that when I
attempt to create a new file using File.new in a directory that does not
exist, instead of creating the directory, an exception is thrown
instead.

--
Luis Parravicini
http://ktulu.com.ar/blog/

You are correct, File.new creates files, not directories.

Check out Dir and FileUtils: RDoc Documentation

FileUtils.mkdir "..." unless File.directory?('...')

Jason

···

On 6/13/07, JT Kimbell <jtkimbell@yahoo.com> wrote:

Hi,

I may be wrong, but after some testing it appears to me that when I
attempt to create a new file using File.new in a directory that does not
exist, instead of creating the directory, an exception is thrown
instead.

To give some background, I am archiving an email listserv so it can be
searched. I've given the listserv administrator the ability to upload a
word document which is parsed and converted into a text file, and stored
both in a database and in a folder hierarchy on the filesystem. The
folder hierarchy starts with folders of each year (2001, 2002, etc), and
each year contains one folder per month (05.2004, 10.2004, etc). So
when a listserv posting from May, 2007 is added, it would go to
"somedir/2007/05.2007/posting_name.txt". I've had no problems when the
folder already exists, but I would like it to be able to create the new
directories needed when a posting from a new month or year is added, so
we don't have to continually add new folders to keep things running
smoothly.

Can anyone direct me to a function, flag, or strategy to achieve what I
am looking for?

Thanks,

JT

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

And also (in the spirit of TMTOWTDI):

require 'ftools'
File.makedirs("dir1/dir2/dir3")

As covered before (
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/50237 )

Cheers,
Peter Cooper

···

On 6/13/07, Jason Roelofs <jameskilton@gmail.com> wrote:

You are correct, File.new creates files, not directories.

Check out Dir and FileUtils: http://ruby-doc.org/core/

FileUtils.mkdir "..." unless File.directory?('...')

Thanks everyone for your help!

···

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