How does one get an absolute absolute file path?

I have a situation where I call a ruby script from a directory that is a
logical link to the actual one. So for instance the actual path is:

/home/me/projects/bin/script.rb

But the path used to call the script is

/home/me/projects/tmp/testing/bin/script.rb

where tmp/testing/bin is a logical link to projects/bin.

With Ruby-1.8.7 using a simple require in the script, like this, works
fine:

require File.dirname(__FILE__) + "../lib/library"

However, this no longer works in 1.9.2 because of the decision, asinine
in my opinion, to remove . from the default load path. So, what I am
trying to discover is how best to provide an absolute path which gives
the same result. The problem is that when I build such a path using
File.expand_path I end up with this:

/home/me/projects/tmp/testing/lib/library

which fails because there is no /home/me/projects/tmp/testing/lib
directory.

My question is: Is there any way to obtain the absolute path for
__FILE__ such that it returns the path to its actual location and not
one that includes any logical links?

···

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

I have a situation where I call a ruby script from a directory that is a
logical link to the actual one. So for instance the actual path is:

/home/me/projects/bin/script.rb

But the path used to call the script is

/home/me/projects/tmp/testing/bin/script.rb

where tmp/testing/bin is a logical link to projects/bin.

With Ruby-1.8.7 using a simple require in the script, like this, works
fine:

require File.dirname(__FILE__) + "../lib/library"

However, this no longer works in 1.9.2 because of the decision, asinine
in my opinion, to remove . from the default load path. So, what I am
trying to discover is how best to provide an absolute path which gives
the same result. The problem is that when I build such a path using
File.expand_path I end up with this:

/home/me/projects/tmp/testing/lib/library

which fails because there is no /home/me/projects/tmp/testing/lib
directory.

My question is: Is there any way to obtain the absolute path for
__FILE__ such that it returns the path to its actual location and not
one that includes any logical links?

File.expand_path( File.dirname( __FILE__ ))
normally does the trick for me.

HTH
R.

···

On Tue, Sep 14, 2010 at 5:05 PM, James Byrne <byrnejb@harte-lyne.ca> wrote:

--
Posted via http://www.ruby-forum.com/\.

--
The best way to predict the future is to invent it.
-- Alan Kay

Robert Dober wrote:

···

On Tue, Sep 14, 2010 at 5:05 PM, James Byrne <byrnejb@harte-lyne.ca> > wrote:

/home/me/projects/tmp/testing/lib/library

which fails because there is no /home/me/projects/tmp/testing/lib
directory.

My question is: Is there any way to obtain the absolute path for
__FILE__ such that it returns the path to its actual location and not
one that includes any logical links?

File.expand_path( File.dirname( __FILE__ ))
normally does the trick for me.

HTH
R.

This construction returns the logical link as part of the path. I want
the actual file system path to the script ignoring the logical link.
--
Posted via http://www.ruby-forum.com/\.

By "logical link" I assume you mean symbolic link -- I've never heard of
a logical link.

You want the pathname package:

    require 'pathname'
    path = Pathname.new(__FILE__)
    p path.realpath

···

At 2010-09-14 11:35AM, "James Byrne" wrote:

Robert Dober wrote:
> On Tue, Sep 14, 2010 at 5:05 PM, James Byrne <byrnejb@harte-lyne.ca> > > wrote:
>>
>>
>> /home/me/projects/tmp/testing/lib/library
>>
>> which fails because there is no /home/me/projects/tmp/testing/lib
>> directory.
>>
>> My question is: Is there any way to obtain the absolute path for
>> __FILE__ such that it returns the path to its actual location and not
>> one that includes any logical links?
>
> File.expand_path( File.dirname( __FILE__ ))
> normally does the trick for me.
>
> HTH
> R.

This construction returns the logical link as part of the path. I want
the actual file system path to the script ignoring the logical link.

--
Glenn Jackman
    Write a wise saying and your name will live forever. -- Anonymous

Glenn Jackman wrote:

>> My question is: Is there any way to obtain the absolute path for
the actual file system path to the script ignoring the logical link.

By "logical link" I assume you mean symbolic link -- I've never heard of
a logical link.

You are correct, I was writing of symbolic links.

You want the pathname package:

    require 'pathname'
    path = Pathname.new(__FILE__)
    p path.realpath

Thank you. This seems to provide the answer that I sought.

···

At 2010-09-14 11:35AM, "James Byrne" wrote:

--
Posted via http://www.ruby-forum.com/\.