Hi Richard,

Glad the advice helped!

Probably a more concise (and robust) way to get the full pathname of your Dir[] results would be:

full_name = File.expand_path(path)

This has the advantage of expanding '~' to '/home/richard' (or whatever).

If you add in higher order functions *here* (I'm just saying this to reinforce the earlier concept along with the above method), you go from this:

array = []
Dir.chdir(dir) do
Dir['**/*'].each do |path|  # Added each & block
 full_name = File.join(dir, path)
 array << path
end
end
array

To this:

Dir.chdir(dir) do
Dir['**/*'].map {|path| File.expand_path(path) }
end
On Tuesday, 24 May 2011 at 11:35 pm, RichardOnRails wrote:
On May 12, 9:56 pm, David Jacobs <develo... / wit.io> wrote:
> 
> > Second, look into higher order functions. They let you change code from this:
> 
> Hi Dave,
> 
> I just want to let you know your tutelage on this thread has not gone
> in vain.
> 
> 1. I wanted to return a list (i.e. array) of filenames rather than
> concatenated strings. Maybe parsing the concatenated strings would
> have gotten me my lists, but I want the arrays to be the direct output
> (in part just to see if I understood your code well enough to do it.)
> 
> 2. I wanted to do it by passing a search pattern to Filename.new and
> a directory to the related expression.
> 
> These changes are displayed at http://www.pastie.org/1969301
> 
> I'm continuing to work on embracing the higher-order methods you
> advocated.
> 
> Best wishes,
> Richard
>