Joel VanderWerf wrote:
> Asfand Yar Qazi wrote:
> 
>> Hi,
>>
>> I want to be able to do the following:
>>
>> lots of Ruby files are in a directory, each containing stuff and a 
>> method 'init_file'.  I want to be able to 'require' each file, and 
>> then call the 'init_file' method within that file.
>>
>> Each file will have its own 'init_file' method, so I can't just do a:
>>
>> require 'file'
>> init_file
>>
>> because the init_file method will have been defined before hand.
>>
>> Is it possible, like in Perl, for an included file to return a value?
> 
> 
> You can do this using the "script" lib I just mentioned on another thread.
> 
> ---- main.rb ----
> require 'script'
> 
> mod1 = Script.load("file1.rb")
> mod2 = Script.load("file2.rb")
> 
> [mod1, mod2].each do |mod|
>   mod.init_file
>   puts "The value of X for #{mod.inspect} is #{mod::X}"
> end
> 
> ---- file1.rb ----
> def init_file
>   puts "init for #{__FILE__}"
> end
> 
> X = "One"
> 
> ---- file2.rb ----
> def init_file
>   puts "init for #{__FILE__}"
> end
> 
> X = "Two"
> 
> ------------------
> 
> Output:
> init for /tmp/script-example/file1.rb
> The value of X for #<Script:/tmp/script-example/file1.rb> is One
> init for /tmp/script-example/file2.rb
> The value of X for #<Script:/tmp/script-example/file2.rb> is Two
> 
> 
> Script also defines #autoscript, which you can use like #autoload to 
> load the modules on demand and assign them to constants.
> 
> 

ahhh..........

this may be useful