![]() |
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/. |
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 |
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/. |
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 10:07 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.