2011-09-21 5 views
7

Ruby-Tk를 사용하는 OS X 용 데스크톱 응용 프로그램에서 작업하고 있습니다. 응용 프로그램에 Apple Events 인터페이스를 제공하고 싶습니다. 즉, 응용 프로그램은 응답하는 AppleScript 명령의 사전 (응용 프로그램에 전송되는 Apple 이벤트에 해당)을 정의하고 사용자/다른 응용 프로그램은 AppleScript 명령으로 Ruby-Tk 응용 프로그램을 스크립팅 할 수 있습니다. 다른 스크립팅 언어는 이러한 기능을 지원합니다. Python은 에 py-aemreceive 라이브러리를 사용하고, http://tclae.sourceforge.net/에는 tclAE 라이브러리를 통해 Tcl을 지원합니다. 나는 Ruby에서 유사한 기능을 찾고 있었으며 비어있었습니다.Ruby는 OS X에서 Apple 이벤트에 응답하는 메커니즘을 제공합니까?

Ruby와 Objective-C 사이에 낮은 수준의 인터페이스를 제공하는 rubyobjc 브릿지가 하나 있습니다.하지만이 젬은 거의 사용되지 않는 것으로 보이고 예제와 문서에는 거의 부족합니다. 이것은 유익한 길을 추구하는 것입니다.

NB : MacRuby는 작동하지만 Tk와 호환되지 않으므로 MacRuby를 제외합니다. 또한 RubyOSA 및 rb-appscript는 내가 찾고있는 것이 아닙니다. Ruby가 Apple 이벤트를 다른 응용 프로그램에 보내고받을 수는 없습니다.

+0

일반 AE 또는 http://www.tcl.tk/man/tcl8.6/TkCmd/tk_mac.htm에 설명 된 (Tcl) API를 통해 Tk에서 지원되는 것 –

답변

1

다른 대안이 없다면 필자는 필요한 AppleEvent C API 부분 (주로 AEInstallEventHandler 및 관련 함수)에 대한 내 자신의 Ruby 래퍼를 작성해야합니다. 다행히도 애플은 여전히 ​​애플의 개발자 문서에서 "유산"상태로 강등되었다고해도이 API를 여전히 지원하고있다 (흥미롭게도, 더 이상 사용되지 않는다). 나는이 함수들을 Ruby의 ffi gem이나 Ruby의 C API를 통해 통합 할 것이다. (나는 아직도 파헤쳐 야한다); C API를 직접 사용하면 다른 보석/모듈에 대한 의존성을 줄일 수 있습니다. 이것이 잘되면 나는 그것을 보석으로 풀어 놓을 것이다.

Donal Fellows의 의견에 관해서는 필자가 권장하는 문서에서 Tk를 통해 지원되는 사용자 정의 AppleEvents가 Ruby의 Tk 인터페이스에서 Tk 호출을 통해 액세스 될 가능성이 높습니다.

1

appscript 라이브러리 (참고 : OS X 제공 루비에서만 작동합니다)를 확인하거나 OS X에서 사용할 수있는 거의 모든 API를 래핑하는 MacRuby을 사용해보세요. .