BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Rubinius开发入门

| 作者 Werner Schuster 关注 6 他的粉丝 ,译者 苏宇 关注 0 他的粉丝 发布于 2007年10月2日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Rubinius正在赢得越来越多的支持,许多Ruby VM的开发者都坚信它前途不可限量

理由之一是它的模块化设计及其展现内部结构的方式。对于新上手的开发人员而言,Rubinius的内省机制(introspection)是一项很体贴的设计。在Ruby中,我们已经可以很方便得通过诸如obj.methods(返回obj的方法列表)的方式观察Ruby类。而Rubinius则做得更上一层楼,你甚至可以访问代表代码数据结构的抽象语法树(Abstract Syntax Tree,AST)。Rubinius使用ParseTree,通过标记和嵌套列表展现其结构。例如,下列代码:

puts "Hello, Rubinius. You rock my world!"

将被解释成:

[:fcall, :puts, [:array, [:str, "Hello, Rubinius. You rock my world!", 0]]]

如果你觉得这看上去象LISP或者Scheme的代码,没错,这不是巧合。这种称为s-表达式(s-expressions,即symbolic expressions)的表现形式也被这些语言用来展现代码。

这种语法树形式的好处在于其可读性要高于另外一种由在内存中一堆链接在一起的对象组成的数据结构。在创建AST的时候这种优势则更为明显,例如,用于使用AST的测试用例。

研究ParseTree有助于Rubinius的开发。现在已经有一些工具基于ParseTree了。Ruby2Ruby将一个ParseTree AST转成Ruby源代码,这样就可以看到运行时生成的Ruby代码,这一点很有用。Flog是一个新工具,它可以分析代码并评估其质量。其它的一些基于ParseTree的工具像Ruby2CHeckle,可以提供类似的检查功能。在Ambition中可以看到另外一种使用ParseTree的方式,它通过利用Ruby代码的ParseTree表现形式创建数据库以及其它数据源的查询语句。

Brian Ford深入探讨了Rubinius,例如得到ParseTree输出。文章的话题中包括用于审视Rubinius代码和相应底层字节码的ParseTree AST的工具。有了这些,Rubinius的开发新手可以迅速了解外表下发生的一切,以及Ruby源代码在用于执行时被转换成什么样子。有关更多最新的细节以及命令行选项介绍可以参考Rubinius的Wiki:命令行选项

对于所有对Rubinius源代码感兴趣的人,Sam Aaron有一篇有关如何在Mac OS X下查看Rubinius源码的文章值得参考一下,文章里收集了一系列相关链接和操作指南。一方面,对于新手而言,Rubinius的源代码管理系统可能会有些令人困惑。在体验了一段时间Subversion之后,该团队目前已经改用了Git。Git是一个分布式代码管理系统,由Linus Torvalds开发,原本是用于Linux内核开发的,但是现在采用这个系统的项目也在不断增加。分布式代码管理系统人气越来越旺了,因为它们让代码分支变得更容易,而代码分支可以让实验变得很简单。

要想了解如何使用Rubinius入手,请参考Rubinius网站上的“使用Git”页。正如Sam Aaron所指出的,一旦Rubinius被检出之后,使用Git来保持和Rubinius最新开发进度的同步,是非常容易的:

进入你的Rubinius所在目录,并敲入以下指令:

git pull ; rake build
查看英文原文:Getting started with Rubinius development
译者简介:苏宇,网名beanworms,软件工程师,开源项目XRuby成员。爱好广泛,尤喜烹饪。乐于寻找更好的解决问题的方法,目前对Ruby技术颇为着迷,个人blog为:http://azure-sky.javaeye.com/。参与InfoQ中文站内容建设,请邮件至china-editorial[at]infoq.com

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT