"require" with many files

Hi, is there any preferred way to load/require all the fiels in a
directory?
For example, my main file does:

require “header.rb”

and file “header.rb” must load all the related files contained in
“headers/” directory. I do the following in “header.rb”:

headers_path = File.dirname(FILE) + ‘/headers’
Dir.chdir(headers_path)
Dir["*.rb"].each do |file|
require “#{headers_path}/#{file}”
end

Is it enought ok or can it receive some Ruby’s magic? XD

Thanks for any suggestion.

I’ve never seen anything else

Iñaki Baz C. wrote:

Dir.chdir(headers_path) Dir["*.rb"].each do |file|
require “#{headers_path}/#{file}”
end

Is it enought ok or can it receive some Ruby’s magic? XD

Thanks for any suggestion.

You do use Ruby magic here ;-). The only thing I would suggest is that
if you do not have to set the current directory to headers_path for some
other reason, use this variation:

Dir[File.join(File.dirname(FILE), ‘headers’, “*.rb”)].each do
|file|
require file
end

Gennady.

On Apr 29, 11:33 am, “ara.t.howard” [email protected] wrote:

glob = File.join( File.dirname(FILE), ‘headers’, ‘*.rb’ )

Dir.glob(glob){|lib| require lib}

is a bit shorter…

I seem to recall proposals for allowing something like “require header/
*” ala Java’s import (maybe I brought it up myself?) but I can’t
remember what the arguments against it were.

Dan

On Apr 29, 2008, at 2:58 AM, Iñaki Baz C. wrote:

headers_path = File.dirname(FILE) + ‘/headers’
Dir.chdir(headers_path)
Dir[“*.rb”].each do |file|
require “#{headers_path}/#{file}”
end

Is it enought ok or can it receive some Ruby’s magic? XD

glob = File.join( File.dirname(FILE), ‘headers’, ‘*.rb’ )

Dir.glob(glob){|lib| require lib}

is a bit shorter…

a @ http://codeforpeople.com/

El Martes, 29 de Abril de 2008, Gennady B.
escribió:

You do use Ruby magic here ;-). The only thing I would suggest is that if
you do not have to set the current directory to headers_path for some other
reason, use this variation:

Dir[File.join(File.dirname(FILE), ‘headers’, “*.rb”)].each do |file|
require file
end

The problem is that I need to load before some specifi files because
have
modules that others files require:

headers_path = File.dirname(FILE) + ‘/headers’
Dir.chdir(headers_path)

require “#{headers_path}/header.rb”
require “#{headers_path}/modules.rb”

Dir[“hdr_*.rb”].each do |file|
require “#{headers_path}/#{file}”
end

But ok, thanks a lot for all your suggestions :slight_smile:

Iñaki Baz C. [email protected] wrote:

Dir[“*.rb”].each do |file|
require “#{headers_path}/#{file}”
end

Is it enought ok or can it receive some Ruby’s magic?

If you say

$: << theDirectory

then you can just require the files by name, I believe… m.