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 H.
On Feb 25, 8:54am, Usman H. [email protected] wrote:
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 H.