相比较JRuby或者IronRuby与其所属平台的集成而言,MacRuby与Cocoa平台的结合更为紧密,这也是MacRuby的价值所在。MacRuby似乎是Mac开发者使用Ruby开发客户端应用的最佳选择。最近在MacRuby的试验性分支上,引入了预编译(Ahead of Time,简称为AOT)技术:

\


\macrubyc允许你将一个给定的Ruby文件编译成Mach-O目标文件,并且还可以生成最终的可执行文件。

\


尽管现在使用MacRuby编写和部署Ruby应用已经可行,但这些应用依然需要携带MacRuby运行时一同发布。实现AOT的目标是为了解决如下问题:

\


\所生成的可执行文件嵌入了所有已编译的Ruby代码,当然也包括静态编译的MacRuby。它可以独立发布,不需要依赖任何MacRuby或者LLVM运行时。因为Ruby源代码已经编译成了原生机器码(正如我们使用JIT编译器在运行时所做的一般),因此这也是混淆代码的一个不错的方式。最终的二进制文件看上去和Objective-C的二进制文件很像(当然体积要更大一些)。

\


举个例子,Chris Wanstrath的BaconDrop工具使用MacRuby开发。尽管这个工具很小,但是在捆绑了MacRuby之后,它的体积达到了15MB。如果借助于AOT编译成二进制文件的话,应该会更小一些。

\


BaconDrop也展示了基于Ruby的工具是如何辅助Mac开发的。BaconDrop以Mac DMG文件的形式发布,这是由Dr Nic开发的一个叫做ChocTop的工具来创建的。这个工具对所有的Cocoa应用都可以使用,自动创建DMG文件,并且会安装Sparkle(用于处理软件更新)。ChocTop拥有一套DSL化的配置系统,并在你的rake文件中添加一些任务。

\


一旦所有的MacRuby应用都可以使用AOT编译,在OS X应用开发方面,Ruby便可成为Objective-C的有力竞争者(也许在iPhone开发方面还不会,因为iPhone的Objective-C运行时不支持垃圾回收)。

\


查看英文原文:Mac and Ruby Roundup: MacRuby AOT, DMGs with ChocTop