InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Mac OS X Leopard:具备DTrace、XCode和Interface Builder支持的Ruby开发环境

作者 Werner Schuster 译者 高昂 发布于 2007年11月1日

领域
语言 & 开发
主题
Ruby ,
动态语言
标签
Apple ,
DTrace

经历漫长的等待之后,Mac OS X Leopard操作系统终于发布,并在其中提供了对于Ruby编程开发的广泛支持。在Wiki站点MacOSForge.org之上列出了Leopard系统中新提供的Ruby特性。

Ruby环境已升级到1.8.6 p36版本,这是我们可以获取的最新Ruby稳定版。此外我们又针对部分重要改进,将p36版本之后发现的重要Bug的补丁包也纳入进来。但这些在当时并不属于Ruby的官方补丁发布版中的一部分(这些补丁在后来已经包含进了官方补丁发布版,但是已经超出了我们系统发布的截止日期)。

[……]

包含程序解释器内核的Ruby libruby.1.dylib类库,以四种形式的二进制代码发布,支持ppc,i386,ppc64以及x86_64四种体系结构。因此开发者可以在 64位的应用程序中加入Ruby代码。所有的C语言扩展对于32位和64位体系架构均可用,只有Tk脚本不能在64位的环境下使用。因此,Ruby解释器的加载路径/usr/bin/ruby仍然保持为32位的形式,使得脚本可以使用Tk扩展,或其他依赖于32位运行的机制。

在默认情况下,Ruby的C语言扩展可以面向ppc和i386两种目标平台发布。如果在链接到非通用类库(比如mysql.com为每个处理器架构定制的二进制文件)的情况下,开发者可以设定ARCHFLAGS环境变量来配置扩展的编译。

除了上述内容之外,Ruby解释器的另一个有趣拓展是对于静态探针的支持。动态跟踪DTrace技术原先是由Sun公司为Solaris开发的,但是目前已经被移植到其他的Unix平台之上。DTrace允许开发者对应用程序甚至操作系统的代码进行低开销的跟踪概览。Mac OS X的Ruby解释器包含下面这些探针

探针

目前Ruby-DTrace之中所包含的探针

探针名称 描述
function-entry 当Ruby方法调用时被激活
function-return 当Ruby方法返回时激活
raise 当Ruby代码抛出异常时激活
rescue 当Ruby代码异常得到处理时激活
line 每一行Ruby代码执行时激活
gc-begin 在垃圾回收周期开始时激活
gc-end 在垃圾回收周期完成之后激活
object-create-start 在Ruby对象被分配之前激活
object-create-done 在Ruby对象完成分配之后激活
object-free 在每次Ruby对象释放之后激活
ruby-probe 可以在Ruby代码中调用的探针(请关注下文)

这些是从Joyents Ruby DTrace项目之中引入。Mac OS X Leopard同样也包含被称作Instrument的工具,用来将跟踪和分析进行可视化展示。

苹果公司同样也为XCode以及GUI设计器Interface Builder提供了Ruby语言的支持:

在Leopard之中,Xcode与RubyCocoa项目模板一同出现,但同时也具备一个模板来生成Test/Unit目标。在BridgeSupport机制的帮助之下,Xcode为Ruby语言提供了更好的代码补全支持。

Interface Builder目前对Ruby语言提供了官方支持。比方说,开发者可以在Xcode中编写Ruby的类,通过outlets或者actions,所有要素都会自动出现在Interface Builder之中。Interface Builder使用RubyCocoa的rb_nibtool工具来同步元数据。在另一方面,你可以在Interface Builder中手工定义outlets或actions,并拖拽到Xcode的Ruby文件中,随后相应的Ruby代码就会被粘帖到其中。

Mac OS X Leopard还包含有一个名为Scripting Bridge的崭新框架,这个框架允许使用脚本来编写应用,同时也支持Ruby语言:

ScriptingBridge是一个新的Leopard框架,为基于AppleScript实现的AppleEvent基础设施提供了访问途径。 ScriptingBridge将会动态生成一个Objective-C语言接口,与指定程序的脚本化字典相对应。开发者可以通过Obective-C语言接口来发送消息并且控制应用程序。

多亏了RubyCocoa项目,使得通过Ruby语言使用ScriptingBridge成为可能。尽管某些脚本元素目前并不支持,比方说enumerations,但是大部分功能对于开发者来说都是可用的。

查看英文原文:Ruby on Mac OS X Leopard with DTrace, XCode and Interface Builder support

译者 高昂 是IEEE-CS、CCF会员,博士研究生,关注开源软件发展与进步。

深度内容

专访Jeffery Richter:Windows 8是微软的重中之重

Jeffery Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffery Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。

解析JDK 7的动态类型语言支持

随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。