Ruby confused about current directory?

B

Brian Hartin

Hi all,

Something is wrong with my environment such that ruby occasionally gets
confused about the 'current directory'. I'm running ruby 1.8.6
(2010-02-04 patchlevel 398) [i386-mingw32] on Windows XP.

The root problem, which seems to break Rake, as well as gem installs, is
that under some situations it thinks the current directory is the
Windows USER_HOME, directory even when the script runs from another
directory.

One way to reproduce this is to create a script that prints the working
directory, e.g. 'puts Dir.pwd'. Next, run these commands in IRB from
the root dir, c:\

irb(main):001:0> Kernel.system('c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/"
=> true
irb(main):001:0> Kernel.system('call c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/Documents and Settings/hartbr"
=> true

I have reinstalled ruby, with no luck. It doesn't do this on a
co-workers machine. Does anyone have any advice?

Thanks,

Brian
 
G

Gennady Bystritsky

Hi all,
=20
Something is wrong with my environment such that ruby occasionally gets
confused about the 'current directory'. I'm running ruby 1.8.6
(2010-02-04 patchlevel 398) [i386-mingw32] on Windows XP.
=20
The root problem, which seems to break Rake, as well as gem installs, is
that under some situations it thinks the current directory is the
Windows USER_HOME, directory even when the script runs from another
directory.
=20
One way to reproduce this is to create a script that prints the working
directory, e.g. 'puts Dir.pwd'. Next, run these commands in IRB from
the root dir, c:\
=20
irb(main):001:0> Kernel.system('c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/"
=3D> true
irb(main):001:0> Kernel.system('call c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/Documents and Settings/hartbr"
=3D> true

It looks like the difference in invocation -- first system() command invoke=
s ruby directly, while the second does it via "call". My guess would be tha=
t "call" may reset working folder to the logged user's home folder (or to w=
hatever working folder is associated with the installed ruby application) b=
efore invoking ruby.exe.

Gennady.
 
L

Luis Lavena

Hi all,

Something is wrong with my environment such that ruby occasionally gets
confused about the 'current directory'.  I'm running ruby 1.8.6
(2010-02-04 patchlevel 398) [i386-mingw32] on Windows XP.

The root problem, which seems to break Rake, as well as gem installs, is
that under some situations it thinks the current directory is the
Windows USER_HOME, directory even when the script runs from another
directory.

One way to reproduce this is to create a script that prints the working
directory, e.g. 'puts Dir.pwd'.  Next, run these commands in IRB from
the root dir, c:\

irb(main):001:0> Kernel.system('c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/"
=> true
irb(main):001:0> Kernel.system('call c:\ruby\bin\ruby.exe
c:\temp\printdir.rb')
"Current dir: C:/Documents and Settings/hartbr"
=> true

I have reinstalled ruby, with no luck.  It doesn't do this on a
co-workers machine.  Does anyone have any advice?

Your co-workers are using XP too?

What is the output of the following?

set HOME
set USERPROFILE

Here, Windows 7:

C:\>ruby -v
ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32]

C:\>irb
irb(main):001:0> Dir.pwd
=> "C:/"
irb(main):002:0> system "ruby C:/Users/Luis/Desktop/t.rb"
Current directory: C:/
=> true
irb(main):003:0> system "call ruby C:/Users/Luis/Desktop/t.rb"
Current directory: C:/
=> true
 
B

Brian Hartin

Luis said:
Your co-workers are using XP too?

What is the output of the following?

set HOME
set USERPROFILE

Hi Luis,

Thanks for replying. Yes, they are using Windows XP. My values for
these are:

C:\Documents and Settings\hartbr>set HOME
HOMEDRIVE=U:
HOMEPATH=\
HOMESHARE=\\icuser\HartBr$

C:\Documents and Settings\hartbr>set USERPROFILE
USERPROFILE=C:\Documents and Settings\hartbr

I tried setting my HOMEDRIVE to C: and my HOMEPATH to \Documents and
Settings\Hartbr, using the 'SET' command, and ran my scripts again in
that window, but no luck.
 
B

Brian Hartin

This is an environment issue, not a Ruby issue. I have narrowed it down
to the fact that cmd.exe is failing to inherit the current directory
from the spawning process. I'll post back if I find a solution.

Thanks.

Brian
 
L

Luis Lavena

This is an environment issue, not a Ruby issue.  I have narrowed it down
to the fact that cmd.exe is failing to inherit the current directory
from the spawning process.  I'll post back if I find a solution.

Thanks.

Question: are you using a custom console process? Like PowerShell/
Console or anything like that?

There was an old bug in Console two that confused cmd.exe not
expanding environment variables.

Also, check how cmd.exe is being started (which parameters like /V:ON
or /E:ON
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top