here is my code :

h = Hash.new  (same error with h = {} )
h[:path] = "/Users/yt/lib/ruby-i386/"
puts "# -> h[:path] = #{h[:path]}"
info_for(h[:path]).each {|k,v| puts "# -> #{k} (#{k.class}) => #{v}
(#{v.class})"}


with :
def info_for(h)
  raise ArgumentError, "The file '#{h[:path]}' does not exist!" unless
File.exist?(h[:path])
  a = MacTypes::Alias.path(h[:path])
  ho = OSAX::ScriptingAddition.new('StandardAdditions',
StandardAdditions).info_for(a.desc)
  h = h.merge(ho)
  h = original_item(h) if h[:alias]
  return h
end

the line which raises this TypeError: can't convert Symbol into Integer
is the first of info_for(h) that's to say :
raise ArgumentError, "The file '#{h[:path]}' does not exist!" unless
File.exist?(h[:path])

clearly i'm in the dark ))
-- 
 ? Le monde est une com?die dont les philosophes sont 
   les spectateurs. ? 
   (Pythagore)