В OSX 10.6 я использовал следующий код, чтобы что-то сделать с каждым выбранным файлом в Finder:
app('Finder').selection.get.each do |item|
url =CGI::unescape(item.URL.get)
puts url
do_pdf(url[16..-1])
end
(это запускается Keyboard Maestro). Это работало отлично, однако в OSX Lion поведение, похоже, изменилось.
selection.get по-прежнему возвращает правильную ссылку app('Finder').selection.get[0] => app"/System/Library/CoreServices/Finder.app"disks["Home"]folders["stian"]folders[ "Загрузки"]document_files["Комплексная экспертиза (1).doc"]
однако, когда я пытаюсь извлечь его с помощью URL.get, я получаю странное число: app('Finder').selection.get[0].URL.get
=> "file:///.file/id=6637683.2924283"
Как взять приведенную выше ссылку и получить путь POSIX в виде текстовой строки (/Home/stian/Downloads/Comprehensive Examination (1).doc)?
Я могу получить текстовую версию всей ссылки следующим образом: app('Finder').selection.get[0].get.to_s
=> "app("/System/Library/CoreServices/Finder.app").disks["Home"].folders["stian"].folders["Downloads"].document_files["Comprehensive Examination (1).doc"]"
поэтому я думаю, что мог бы разобрать это вручную и построить путь POSIX, но это кажется очень громоздким и хрупким.
Спасибо за любую помощь!