InfoQ

新闻

RadRails1.0降临——增加Profiler、CallGraph Analyzer和Rails Shell等新特性

作者 Werner Schuster 译者 李明(nasi) 发布于 2008年4月7日 上午8时22分

社区
Ruby
主题
编程,
调试,
性能和可伸缩性,
JRuby,
Ruby on Rails
标签
Rails,
RadRails,
Eclipse,
Ruby on Rails,
JRuby

作为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. 

中文有问题 发表人 xie vincent 发表于 2008年4月8日 下午8时10分
Re: 中文有问题 发表人 xie vincent 发表于 2008年4月9日 上午2时17分
  1. 返回顶部

    中文有问题

    2008年4月8日 下午8时10分 发表人 xie vincent

    radrails1.0有一个严重的bug,打开部分带有中文的ruby代码文件的时候会down掉, 这个错误实在太低级了。

  2. 返回顶部

    Re: 中文有问题

    2008年4月9日 上午2时17分 发表人 xie vincent

    重新下载Aptana1.1.6,再在新的Aptana上安装RadRails1.0.1,已经没有原来那个错误了。 Aptana和RadRails还是挺不错的,就是还不够稳定,希望将来的版本可以变得更好些。

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。