我正在使用 Ruby-Tk 为 OS X 开发桌面应用程序,我想为该应用程序提供一个 Apple 事件接口。这意味着应用程序将定义一个 AppleScript 命令字典,它将响应(对应于发送到应用程序的 Apple 事件),并且用户/其他应用程序可以使用 AppleScript 命令编写 Ruby-Tk 应用程序脚本。其他脚本语言支持此类功能——Python 通过http://appscript.svn.sourceforge.net/viewvc/appscript/py-aemreceive/上的 py-aemreceive 库和通过http://tclae.sourceforge上的 tclAE 库的 Tcl .net/。我一直在 Ruby 中寻找类似的功能,但一无所获。
一种可能的机制是 rubyobjc 桥,它在 Ruby 和 Objective-C 之间提供了一个低级接口,但是这个 gem 似乎很少使用,并且非常缺乏示例和文档,所以我不确定这是否是一个硕果累累的追求之路。
注意:MacRuby 可能可以工作,但它与 Tk 不兼容,因此排除了 MacRuby。此外,RubyOSA 和 rb-appscript 不是我想要的——它们允许 Ruby 将 Apple 事件发送到其他应用程序,而不是接收它们。