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?
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:
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