rb-appscript не работает в Mountian Lion

Я использую rb-appscript. Следующая строка прекрасно работала в Lion, но, похоже, не работает в Mountain Lion:

desktop_bounds = Appscript.app.by_name("Finder").desktop.window.bounds.get

У меня есть два вопроса:

  1. Есть ли способ исправить это в Mountain Lion.
  2. Я вижу, что проект rb-appscript больше не поддерживается. Есть ли лучшая альтернатива?

2 ответа

Решение

Просто мои два цента: MacRuby как замена более Ruby, но определенно меньше Appscript, чем rb-appscript. Но это должно сделать работу.

Я думаю, что это та же самая проблема, которая возникла для iTunes 10.6.3: см. Здесь обсуждение iTunes (вместе со ссылкой на более полные дебаты о будущем appscript после публикации доктора Дранга) и исправление Мэтта Нойбурга,

Кажется, проблема в том, что appscript больше не может извлекать словарь для приложения (в данном случае Finder), поэтому любые вызовы специфичных для приложения методов прерываются. Мэтт опубликовал скрипт на https://github.com/mattneub/appscript/tree/master/rb-appscript который предоставляет альтернативный подход к извлечению словаря. Вы можете использовать это следующим образом для восстановления функциональности:

require 'Appscript'

$RUBY_DIR = '/Users/ben/Documents/Code/rb-appscript'

def app_module( id )
  require "#{$RUBY_DIR}/sdefToRBAppscriptModule.rb"
  f = FindApp.by_id(id)
  return SDEFParser.makeModule(f)
end

finder = Appscript.app("Finder", app_module('com.apple.finder'))

desktop_bounds = finder.desktop.window.bounds.get
p desktop_bounds
Другие вопросы по тегам