抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

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

2008 年 4 月 07 日

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

2008 年 4 月 07 日 08:22496
用户头像

发布了 80 篇内容, 共 16.2 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

深入浅出 Go - sync.Once 源码分析

哈希说

golang

强化学习入门必看之强化学习导识

Alocasia

人工智能 学习

万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

龙台的技术笔记

架构 AQS ReentrantLock JUC CLH

架构师训练营第九周作业

_

极客大学架构师训练营 第九周作业

架构师训练营第九周作业

我是谁

极客大学架构师训练营

UNISKIN COO Kevin|营销数字化:数据沉淀和数据系统化运营一定要趁早!

Linkflow

营销数字化 客户数据平台 CDP

数字货币交易所开发有哪些模式?区块链交易平台

13530558032

合约跟单源码案例,合约跟单模式开发

13530558032

《JAVA多线程设计模式》.pdf

田维常

多线程

11月阿里Spring全家桶+MQ微服务架构笔记:源码+实战

小Q

Java 学习 程序员 面试 微服务

深入浅出 Go - sync.Map 源码分析

哈希说

golang

公众号高频被调整,它不是企业生产文章的机器

Linkflow

客户数据平台 CDP 私域流量

区块链社交即时通许系统开发,区块链社交app开发价格

13530558032

DataPipeline CPO 陈雷:实时数据融合之道,博观约取,价值驱动

DataPipeline数见科技

数据融合

媲美物理机,裸金属云主机如何轻松应对11.11大促

京东科技开发者

云计算 服务器 云主机 裸金属容器

DataPipeline CPO 陈雷:实时数据融合之法,便捷可管理

DataPipeline数见科技

数据融合

深入理解h2和r2dbc-h2

程序那些事

响应式编程 R2DBC 程序那些事 响应式架构 r2dbc-h2

阿里达摩院副院长亲自所写Java架构29大核心知识体系+大厂面试真题+微服务

Java架构追梦

Java 学习 阿里巴巴 架构 面试

Istio 1.8 发布——用户至上的选择

Jimmy Song

开源 云原生 Service Mesh istio

区块链数字钱包系统开发方案,区块链钱包APP源码

13530558032

微信官方将打击恶意营销号:自媒体不可过度消费粉丝

石头IT视角

亚马逊全球百万钜惠引爆“黑五” 跨境狂欢“巅峰6日”震撼登场

爱极客侠

OpenFeign和Consul爱恨交织的两天

编号94530

Spring Cloud Consul OpenFegin spring 5

MySQL主从数据库没有同步怎么办?

冰河

MySQL 数据库 分布式 微服务

DataPipeline CPO 陈雷:实时数据融合之法,稳定高容错

DataPipeline数见科技

数据融合

接口测试学习之json

测试人生路

json 接口测试

快进收藏吃灰!字节跳动大佬用最通俗方法讲明白了红黑树算法

小Q

Java 学习 架构 面试 算法

如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章

itclanCoder

vuepress 解锁文章 博客引流 建站

甲方日常 54

句子

工作 随笔杂谈 日常

一致性hash算法

天涯若海

面试官问:如何排除GC引起的CPU飙高?我脱口而出5个步骤

田维常

cpu飙满

Study Go: From Zero to Hero

Study Go: From Zero to Hero

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