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?

On Tue, Sep 14, 2010 at 5:05 PM, James B. [email protected]
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.

Robert D. wrote:

On Tue, Sep 14, 2010 at 5:05 PM, James B. [email protected]
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.

At 2010-09-14 11:35AM, “James B.” 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 want the pathname package:

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

Glenn J. wrote:

At 2010-09-14 11:35AM, “James B.” 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.