Joe Van Dyk <joevandyk / gmail.com> wrote:
> Hi,
>
> Say I have /joe/configuration/config.rb:
> ==============================
> puts "this configuration file is located in this directory: " +
> File.dirname( ????? )
> eval File.read(File.dirname( ?????? ) + "/common.rb")
> # other stuff
> ==============================
>
> common.rb is located in /joe/configuration.  It also contains some
> Ruby code.
>
>
> The main program looks something like this:
> ==============================
> config_file = ARGV.shift
> eval File.read config_file

IMHO eval is completely superfluous here: just do

load config_file


> ==============================
>
> And I'd start the program via 'ruby main.rb /joe/configuration.rb'.
>
> So, I have a main program that reads in a Ruby configuration file that
> can also read other configuration files that are in a relative
> directory.  I'm having problems with the relative directory part.  If
> I hardcode the directory paths, everything's ok.  But I don't want
> /joe/configuration/config.rb to know that it's in /joe/configuration.
> I just want that configuration file to be able to read
> /joe/configuration/common.rb.

If those other files do only belong to your config.rb (and are no files that 
you wish to require) then you can do this in config.rb

base = File.basename __FILE__

load File.join(base, "common.rb")

File.open(File.join(base, "common.rb") do |io|
....
end

File.open(File.join(base, "etc", "lib", "whatever.conf") do |io|
....
end

Kind regards

    robert