[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Which Directory was my ruby script run from?

Matthew John

1/20/2006 1:53:00 PM

Hi All,

How do I find out which directory my ruby script was run from?

Thanks Matthew John
p.s Today I'm using Windows

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


8 Answers

Robert Klemme

1/20/2006 1:56:00 PM

0

Matthew John wrote:
> Hi All,
>
> How do I find out which directory my ruby script was run from?

Dir.getwd
Dir.pwd

robert


James Gray

1/20/2006 1:59:00 PM

0

On Jan 20, 2006, at 7:52 AM, Matthew John wrote:

> Hi All,
>
> How do I find out which directory my ruby script was run from?
>
> Thanks Matthew John
> p.s Today I'm using Windows

Try:

File.dirname($PROGRAM_NAME)

James Edward Gray II


Mike Fletcher

1/20/2006 2:10:00 PM

0

Matthew John wrote:
> Hi All,
>
> How do I find out which directory my ruby script was run from?

Maybe Dir.getwd?

------------------------------------------------------------- Dir::getwd
Dir.getwd => string
Dir.pwd => string
------------------------------------------------------------------------
Returns the path to the current working directory of this process
as a string.

Dir.chdir("/tmp") #=> 0
Dir.getwd #=> "/tmp"

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


Jamey Cribbs

1/20/2006 3:30:00 PM

0

Mike Fletcher wrote:

>Matthew John wrote:
>
>
>>Hi All,
>>
>>How do I find out which directory my ruby script was run from?
>>
>>
>
>Maybe Dir.getwd?
>
>------------------------------------------------------------- Dir::getwd
> Dir.getwd => string
> Dir.pwd => string
>------------------------------------------------------------------------
> Returns the path to the current working directory of this process
> as a string.
>
> Dir.chdir("/tmp") #=> 0
> Dir.getwd #=> "/tmp"
>
>
I use File.dirname($0).

Jamey Cribbs

Confidentiality Notice: This email message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and/or privileged information. If you are not the intended recipient(s), you are hereby notified that any dissemination, unauthorized review, use, disclosure or distribution of this email and any materials contained in any attachments is prohibited. If you receive this message in error, or are not the intended recipient(s), please immediately notify the sender by email and destroy all copies of the original message, including attachments.


Matthew John

1/20/2006 3:58:00 PM

0

I've written a little script to test, and it looks like the second reply
by Mike is the only one that works. The other two provide me with the
location of the file, not the directory where the file was run from.

My script is in c:\sparkdriver\bin and this is set in my path.

When I run the the testfile.rb script from the c:\Documents and Settings
folder I get the following results:-

C:\Documents and Settings>testfile.rb
Physical Location of File c:\sparkdriver\bin

c:/sparkdriver/bin - File.dirname($PROGRAM_NAME)
C:/Documents and Settings - Dir.getwd
c:/sparkdriver/bin - File.dirname($0)

---- testfile.rb

puts "Physical Location of File c:\\sparkdriver\\bin\n\n"

dir = File.dirname($PROGRAM_NAME)
puts dir + ' - File.dirname($PROGRAM_NAME)'

dir = Dir.getwd
puts dir + ' - Dir.getwd'

dir =File.dirname($0)
puts dir + ' - File.dirname($0)'

Thanks for your help.

Matthew John

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


Tim Hammerquist

1/22/2006 7:38:00 AM

0

Matthew John <mj@mjcltd.net> wrote:
> I've written a little script to test, and it looks like the
> second reply by Mike is the only one that works. The other
> two provide me with the location of the file, not the
> directory where the file was run from.

Excellent! I love seeing posters get resourceful with the
answers they receive! This makes me happy. :)

Yes, File.dirname and Dir.getwd do two very different things,
which you discovered. There seems to have been a small
misunderstanding.

File.dirname simply does string manipulation on its argument,
whereas Dir.getwd actually gets the directory from which the
current script ($0) was invoked... which is what you were asking
for.

BTW, $0 and $PROGRAM_NAME are aliases for the same variable.

> Thanks for your help.

Thank you for making the most of the help offered!

Cheers!
Tim Hammerquist

Gene Tani

1/22/2006 9:08:00 AM

0


Tim Hammerquist wrote:

> BTW, $0 and $PROGRAM_NAME are aliases for the same variable.
>

"__FILE__", too, I guess

Mike Fletcher

1/24/2006 4:36:00 PM

0

Gene Tani wrote:
> Tim Hammerquist wrote:
>
>> BTW, $0 and $PROGRAM_NAME are aliases for the same variable.
>>
>
> "__FILE__", too, I guess

Nope. __FILE__ is the name current source file, which can be different
than $0 in different modules.

freebie:~ 839> ruby aprog.rb
$0: aprog.rb
__FILE__: ./amodule.rb
aprog $0: aprog.rb
aprog __FILE__: aprog.rb
freebie:~ 840> cat aprog.rb
#!/usr/local/bin/ruby
require 'amodule'

f = Foo.new

f.pr_dollar0
f.pr_file

puts "aprog $0: #{$0}"
puts "aprog __FILE__: #{__FILE__}"

exit 0

__END__
freebie:~ 841> cat amodule.rb
class Foo
def pr_file
puts "__FILE__: #{__FILE__}"
end
def pr_dollar0
puts "$0: #{$0}"
end
end

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