Gordon Hartley wrote:
...
> Page 124 of Pickaxe (2nd Ed.) mentions that variables are not
> propogated to the scope that loads/requires them, so is there any way
> of referring to / accessing them? 

The approach I tend to use is in my "script" library:

http://redshift.sourceforge.net/script/

Briefly, Script.load and Script.require still read and eval the file, 
but they return a module which contains the constants and methods 
defined at the top level in the file (and in any local files required by 
that file). So if you're willing to live with the following syntax

   ONE = Needed.new("1")

or

   def one
     Needed.new("1")
   end

then you can retrieve these values with something like

   Script.require(filename).const_get filename[0..-4].upcase

or

   Script.require(filename).send filename[0..-4]

It might even work out to just put a line of the form

   NEEDED = Needed.new("1")

in each file and then retrieve it with

   Script.require(filename)::NEEDED

(But probably I don't understand something about the rest of your program.)

...
>   eval_me = File.open(file_name).readlines.to_s

More simply:

     eval_me = File.read(file_name)

HTH.