How to require all directories and sub-directories

Hi Guys, I would like to require a set of *.rb files into my test. But the problem is they sit in sub-directories. So i end up with a whole list of require statements.

If i am doing something like this: Dir["lib/config/*.rb"].each {|file| require file } Dir["lib/common/*.rb"].each {|file| require file } Dir["lib/page/*.rb"].each {|file| require file }

lib is common so is there a way I can turn those three statements into just one line of code?

So that it looks like something like this: Dir["lib/*/*.rb"].each {|file| require file }

any help would be much appreciated...

Kind regards, Usman Hussain

Hi Guys, I would like to require a set of *.rb files into my test. But the problem is they sit in sub-directories. So i end up with a whole list of require statements.

If i am doing something like this: Dir["lib/config/*.rb"].each {|file| require file } Dir["lib/common/*.rb"].each {|file| require file } Dir["lib/page/*.rb"].each {|file| require file }

lib is common so is there a way I can turn those three statements into just one line of code?

So that it looks like something like this: Dir["lib/*/*.rb"].each {|file| require file }

This will require every file in lib and its subdirectories: files = File.join(File.dirname(__FILE__),'..','lib','**','*.rb') Dir.glob(files).each do |file|   require file end

If you must have it as a one liner (a little harder to read imho): Dir.glob(File.join(File.dirname(__FILE__),'..','lib','**','*.rb')).each{| file> require file}

This assumes you're keeping your directory structure organized something like:

~project_root/ >~lib/ > >+config/ > >+common/ > >+page/ >~test/ > >-test.rb

-T

ahhh brilliant. Thanks for that.

I did something a bit similar but had all the folder names in an arry getting passed in. But that was a bit messy looking. So your solution works a treat.

Thanks for your help.

Kind regards, Usman Hussain