Forum: Ruby Newbie - open file permission denied

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bob S. (Guest)
on 2008-12-24 17:46
I am attempting to open a directory, open each file and send each line
of the file to a network host.
I can get the code to work for a single file, but the script fails with
a "permission denied" error when I attempt to do this for each file in a
directory.

*****CODE*****
IPADDR= "some ip address"
OUTPORT = "some ip port"
INDIR = "some directory"
dir = Dir.open(INDIR)
dir.each do |f|
file = File.open(f,"r")
streamSock = TCPSocket::new(IPADDR,OUTPORT)
while(line = file.gets)
streamSock.send(line,0)
end
streamSock.close
file.close
end
*****END CODE******
any help greatly appreciated

Thank you.
Tim H. (Guest)
on 2008-12-24 18:03
(Received via mailing list)
Bob S. wrote:
> dir = Dir.open(INDIR)
> any help greatly appreciated
>
> Thank you.

The filenames returned by dir.each are just filenames, not the complete
paths. You may need to prepend the INDIR directory name to the filenames
to get a complete path to open.
unknown (Guest)
on 2008-12-24 18:24
(Received via mailing list)
On Wed, Dec 24, 2008 at 10:53 AM, Tim H. <removed_email_address@domain.invalid>
wrote:
> paths. You may need to prepend the INDIR directory name to the filenames to
> get a complete path to open.

Another possible option might be something like:

Dir.glob("#{INDIR}/*").each do |filename|
  File.open(filename, "r") do |file|
    #...
  end
end

glob does return the full path to the file.

Or, possibly something like this could work:

Dir.chdir(INDIR) do
  Dir.foreach(".") do |filename|
    #...
  end
end
Bob S. (Guest)
on 2008-12-24 18:35
unknown wrote:
>
> Dir.glob("#{INDIR}/*").each do |filename|
>   File.open(filename, "r") do |file|
>     #...
>   end
> end
>
> glob does return the full path to the file.

Thank you, the Dir.glob gets rid of the error.
This topic is locked and can not be replied to.