brunik
April 28, 2010, 3:08pm
1
Hello everyone,
ok… I have file (file.txt) which is written by a script. In this given
file there’s a path (c:/path/path1/path2) and I have the following code
in another script:
File.open(‘file.txt’).each_line do |p|
Dir::chdir("#{p}")
{
bunch of code
}
What I want to do after this is to go up to /path1 or /path and run some
more code; and this is where I’m stuck.
Can anyone point me in the right direction?
Thank you,
Andrei
brunik
April 28, 2010, 3:59pm
2
Andrei C. wrote:
File.open(‘file.txt’).each_line do |p|
Dir::chdir("#{p}")
{
bunch of code
}
What I want to do after this is to go up to /path1 or /path and run some
more code; and this is where I’m stuck.
Can anyone point me in the right direction?
Note that p contains a newline at the end, which I’d expect would give
you an Errno::ENOENT.
But if the chdir is successful then you can walk up a level using “…”.
Note that inside the block form of chdir this gives a warning.
Dir.pwd
=> “/home/candlerb”
Dir.chdir("/etc/fonts") { Dir.chdir("…"); puts Dir.pwd }
(irb):8: warning: conflicting chdir during another chdir block
/etc
=> nil
Otherwise you could try:
Dir.chdir§ { … some code … }
Dir.chdir("#{p}/…") { … some more code … }
or take a look at the Pathname library
require ‘pathname’
=> true
p = Pathname.new("/etc/fonts")
=> #Pathname:/etc/fonts
p.parent.to_s
=> “/etc”
brunik
April 28, 2010, 4:26pm
3
“Andrei C.” [email protected] wrote in message
news:[email protected] …
bunch of code
Posted via http://www.ruby-forum.com/ .
From path2:
Dir::chdir(“…”) # returns to path1
Dir::chdir(“…..”) # returns to path
Hth gfb
brunik
April 28, 2010, 4:30pm
4
GianFranco B. wrote:
Dir::chdir("…") # returns to path
I’m afraid this won’t:
irb(main):020:0> “…”
=> “…”
You need “…/…” (preferred, even under Windows), or “…\…”, or
‘…’
irb(main):021:0> “…\…”
=> “…\…”
irb(main):022:0> “…\…”.size
=> 5
brunik
April 29, 2010, 9:06am
5
Thank you very much guys, this works great.
@Brian
You were right about the error, though for me it returned
(Errno::EINVAL) which I fixed with:
p.delete! “\n”
Best Regards,
Andrei
brunik
April 29, 2010, 6:31pm
6
On Thu, Apr 29, 2010 at 9:06 AM, Andrei C.
[email protected] wrote:
Thank you very much guys, this works great.
@Brian
You were right about the error, though for me it returned
(Errno::EINVAL) which I fixed with:
p.delete! “\n”
p.chomp!
Jesus.