作者 Werner Schuster译者 李明(nasi)
作为Aptana IDE的一部分,RadRails目前已经发布了1.0版本。作为一直以来流行的Rails开发工具,新版本的RadRails为Ruby和Ruby on Rails的开发者都新增了有用的特性。这里有一个RadRails、Netbeans和CodeGears的3rdRail的特性完全比较,从比较中可以看出RadRails在重构(refactoring)和性能剖析(profiling)方面更胜一筹。另一个RadRails的特性是Rails Shell,它允许用户在Eclipse IDE内部使用Rails命令——可以使用自动补全及其他一些功能。(有一个截屏视频演示了Rails Shell的特性)。
关于这个新发布,我们采访了Aptana的Christopher Williams。Christopher在2007年受雇于Aptana,以继续其在Ruby Development Tools(RDT)上的工作,而RDT则是RadRails的基础。
RadRails1.0支持Ruby代码的性能剖析,可以通过GUI显示每个方法的运行时间和调用图表。Christopher解释了这是如何实现的:
此Profiler是ruby-prof gem的一个简单包装。我们将从ruby-prof的bin脚本中得到的ruby脚本的执行包装起来,并将输出定向到一个临时文件中。然后,当执行结束的 时候,我们通过解析输出并生成调用图表和着重点以供查看。这个目前对JRuby还不支持,因为对于用原生C代码写成的ruby-prof gem来说,Java目前还没有替代品。一旦有了这个替代品,我们就会马上让JRuby也支持这项特性。 如 果要实现这个功能:我们就得修改ruby-prof gem使得它类似于ruby-debug的ruby-debug-ide gem那样工作——至少可以允许对于profiler的远程连接和实时地通过套接字来发送剖析相关的命令(这样我们便可得到快照,而非等到程序结束后再从 输出中获得)。或者我们可以创建一个JRuby兼容的ruby-prof。这实在是取决于用户的需求。这是个标志性的新功能,因此我们也在收集需求以求改 进。
RDT很早就完整支持通过更快的ruby-debug在Eclipse调试器GUI下调试Ruby代码。RadRails也包含了jruby-debug,一个更快的JRuby调试支持的实现:
是的,在RadRails 1.0之中我们已经支持JRuby版本的ruby-debug gem——因此现在有了一个快速的JRuby调试的选择。实际上我们会预装在伴随发布的JRuby中。
在RadRails 1.0的特性列表中将“Rubinius”作为一个支持的Ruby解释器。Christopher解释了这项支持目前的状态:
当前使用Rubinius作为启动Ruby进程的解释器还有诸多限制。当Rubinius成熟之时,就可以 使用它来尝试运行gems甚至Rails。目前还没有真正的Rubinius专署特性(然而也没有任何JRuby或者标准Ruby的专署特性。接下来我们 会尽力做到完全支持每一个解释器。通过JRuby和Rubinius,通常只需要等待新gem或者更新代码来增强其功能)。 如 果大量用户开始尝试使用Rubinius并向我们告知缺少调试器,我们一定会使之集成进来。当我们使用ruby-debug为Ruby创建调试器之时,我 们和Kent Sibilev及Martin Krauskopf(在Sun公司从事Netbeans开发)一起共享我们的代码——这使得大量IDE公用库集成了ruby-debug。因此已经有了大 量的de-facto标准来为RDT/RadRails和Netbeans继承一个调试后端。只需要连接Rubinius的调试器,打开一个套接字并读入 XML命令即可。(如果其他人需要这样的话,请联系我或者Martin。这样可以一举使得Rubinus调试器有效地在Netbeans和 RDT/RadRails上工作)。
公用调试协议实现详见RubyForge的debug-commons项目。InfoQ报道了Rubinius的全速调试器——目前并不支持公用调试协议,因此使用全速调试器的API需要另外的协议后端。 尽管RadRails很明显和Ruby on Rails的开发紧密相连,但是在将来它同样会支持其他的框架:
目前我们还没有关于提供对其他框架支持的强烈需求。很明显我们专注于Rails,但是实际上RadRails是一个全功能的Ruby IDE(通过RDT构建)。如果一个框架变得流行起来,用户提出需要支持它的需求的时候,我们一定会调研。 另外,很多用户正在使用Brad Wilson的HAML和SASS编辑器。不幸的是,最近的发布版破坏了其与RDT的集成,而且Brad没有时间来继续维护和改进。我们正在和他一道将他的编辑器引入RadRails中,这样更有利于以后的维护和改进。
通过Ruby使用EclipseMonkey将RadRails和Aptana脚本化——Christopher讲述了这项特性背后的观点:
当我创建了EclipseMonkey和JRuby之间的集成以后,我希望很多人会关注到,并说“嘿呀,我 现在能用Ruby来为IDE写脚本了!”。然而直到现在,社区对它的接受程度并没有达到我的预期。[..][我了解到]作为一个终端用户,他们可以不需要 编译就能迭代开发一项新特性,而且不需要下载Eclipse SDK,也不需要检出我们全部的源代码,那些让人晕头转向的东西。你仅需要编写Ruby/JRuby代码、运行脚本、编辑它、再运行,诸如此类。通过 DOM我们能够提供一个很小很简单的API,看上去很像Ruby API。
想尝试Aptana和RadRails 1.0或者只是想实际看看其特性的话,请看展示了大量特性的截屏视频。
查看英文原文:RadRails goes 1.0 - adds Profiler, CallGraph Analyzer, Rails Shell, etc.