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?
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.
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.
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
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.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.