当前位置: 首页 > 工具软件 > MacRuby > 使用案例 >

Mac和Ruby综述:MacRuby AOT,用ChocTop创建DMG文件

暨正真
2023-12-01

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

\
引入了macrubyc,一个命令行工具,作为AOT编译器的接口。

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

\

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

\
所生成的Mach-O目标是真正的目标文件。它们可以用来生成MacRuby的可执行文件,你也可以在Objective-C的项目中通过MacRuby的Objective-C API来使用它们。

\所生成的可执行文件嵌入了所有已编译的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

 类似资料: