When I execute a ruby script by the following:
ruby <path>helloworld.rb onlyarg
How can I find what <path> equals?
For example, in Windows, ruby C:\scripts\helloworld.rb onlyarg
helloworld.rb:
···
----------------------------------------------
# What can I put here to display the value C:\scripts\ or C:\scripts?
puts ARGV[0]
----------------------------------------------
output:
----------------------------------------------
onlyarg
----------------------------------------------
Thanks!
Matthew
The constant __FILE__ will contain the full path to the currently
executing file.
Justin
···
On 1/11/07, Matthew Hailstone <matthew.hailstone@gmail.com> wrote:
When I execute a ruby script by the following:
ruby <path>helloworld.rb onlyarg
How can I find what <path> equals?
When I execute a ruby script by the following:
ruby <path>helloworld.rb onlyarg
How can I find what <path> equals?
$0 will give you the full string... then use chop it up using dirname to get the directory...
% cat foo.rb
puts File.dirname($0)
% ruby /Users/philip/foo.rb
/Users/philip
···
For example, in Windows, ruby C:\scripts\helloworld.rb onlyarg
helloworld.rb:
----------------------------------------------
# What can I put here to display the value C:\scripts\ or C:\scripts?
puts ARGV[0]
----------------------------------------------
output:
----------------------------------------------
onlyarg
----------------------------------------------
Thanks!
Matthew
ruby C:\scripts\helloworld.rb
helloworld.rb:
···
----------------------------------------------
# What can I put here to display the value C:\scripts\ or C:\scripts?
puts $0
puts _FILE_
puts ARGV[0]
----------------------------------------------
output:
----------------------------------------------
C:/scripts/helloworld.rb
C:/scripts/helloworld.rb:3: undefined local variable or method
`_FILE_' for main:Object (NameError)
----------------------------------------------
ruby C:\scripts\helloworld.rb
helloworld.rb:
----------------------------------------------
# What can I put here to display the value C:\scripts\ or C:\scripts?
puts $0
puts ARGV[0]
----------------------------------------------
output:
----------------------------------------------
C:/scripts/helloworld.rb
onlyarg
----------------------------------------------
I found the $0 documented in the
http://www.rubycentral.com/book/rubyworld.html page.
Justin, how would you recommend me using the _FILE_ constant?
Thanks,
Matthew
On 1/11/07, Justin Bailey <jgbailey@gmail.com> wrote:
On 1/11/07, Matthew Hailstone <matthew.hailstone@gmail.com> wrote:
> When I execute a ruby script by the following:
>
> ruby <path>helloworld.rb onlyarg
>
> How can I find what <path> equals?
The constant __FILE__ will contain the full path to the currently
executing file.
Justin
"Justin Bailey" <jgbailey@gmail.com> writes:
When I execute a ruby script by the following:
ruby <path>helloworld.rb onlyarg
How can I find what <path> equals?
The constant __FILE__ will contain the full path to the currently
executing file.
s/constant/keyword/
···
On 1/11/07, Matthew Hailstone <matthew.hailstone@gmail.com> wrote:
Justin
--
Christian Neukirchen <chneukirchen@gmail.com> http://chneukirchen.org
Matthew Hailstone wrote:
ruby C:\scripts\helloworld.rb
helloworld.rb:
----------------------------------------------
# What can I put here to display the value C:\scripts\ or C:\scripts?
puts $0
puts _FILE_
There should be two underscores on each side of __FILE__, as the
original poster had it.
Looks like __FILE__ and $0 are the same.
Thanks for the clarification on __FILE__,
Matthew
···
On 1/11/07, Phrogz <gavin@refinery.com> wrote:
Matthew Hailstone wrote:
> ruby C:\scripts\helloworld.rb
>
> helloworld.rb:
> ----------------------------------------------
> # What can I put here to display the value C:\scripts\ or C:\scripts?
> puts $0
> puts _FILE_
There should be two underscores on each side of __FILE__, as the
original poster had it.
Not necessarily... when running a script under rcov or similar, they
may differ (for example one starts with ./ while the other does not).
That's why I write the if __FILE__ == $0 idiom as
if File.expand_path(__FILE__) == File.expand_path($0)
Another possibility might be is when you start the script using $PATH,
i.e. not from current directory, but without specifying its path.
···
On 1/11/07, Matthew Hailstone <matthew.hailstone@gmail.com> wrote:
Looks like __FILE__ and $0 are the same.
Also, and i haven't even bothered to test this, but if it's similar to PHP's FILE variable, it's the *current* file... so require a file, call a method in that file, and access __FILE__ in that method and you're gonna get your required file, not the initial one...
-philip
···
On 1/11/07, Matthew Hailstone <matthew.hailstone@gmail.com> wrote:
Looks like __FILE__ and $0 are the same.
Not necessarily... when running a script under rcov or similar, they
may differ (for example one starts with ./ while the other does not).
That's why I write the if __FILE__ == $0 idiom as
if File.expand_path(__FILE__) == File.expand_path($0)
Another possibility might be is when you start the script using $PATH,
i.e. not from current directory, but without specifying its path.