Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   How does one get an absolute absolute file path? (http://www.velocityreviews.com/forums/t864426-how-does-one-get-an-absolute-absolute-file-path.html)

James Byrne 09-14-2010 03:05 PM

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/.


Robert Dober 09-14-2010 03:08 PM

Re: How does one get an absolute absolute file path?
 
On Tue, Sep 14, 2010 at 5:05 PM, James Byrne <byrnejb@harte-lyne.ca> wrote:
> I have a situation where I call a ruby script from a directory that is a
> logical link to the actual one. =A0So 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. =A0So, what I am
> trying to discover is how best to provide an absolute path which gives
> the same result. =A0The 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.
> --
> Posted via http://www.ruby-forum.com/.
>
>




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


James Byrne 09-14-2010 03:35 PM

Re: How does one get an absolute absolute file path?
 
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/.


James Byrne 09-14-2010 06:02 PM

Re: How does one get an absolute absolute file path?
 
Glenn Jackman wrote:
> At 2010-09-14 11:35AM, "James Byrne" 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.
--
Posted via http://www.ruby-forum.com/.



All times are GMT. The time now is 03:26 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.