dnsh dnsh - 4 months ago 27
Ruby Question

What is the meaning of '{**}' in Pathname#join

In my Rails project in

file there is a line, which is written by some previous developer who was working on the project.

config.autoload_paths += Dir[Rails.root.join('app', 'classes', '{**}')]

I know that
is used by rails to load all required files. I am not able to figure out the meaning of
. Does this means all files and sub directories of classes directory will be loaded? Is there any documentation which I can refer for this.

I have done some debugging.

2.2.5 :008 > Rails.root.join('app', 'classes', '{**}')
=> #<Pathname:/home/tk/src/project-name/app/classes/{**}>

This is actually a Pathname object. But I have not found any reference about

Does any one have any idea what is

Is there any documentation for this?


Pathname just builds a path, it does not care about parts.

** is a parameter to Dir#[] which is eventually an alias to Dir#glob.

** means “match directories recursively.”