Ruby社区最近发布的更有趣的公告之一是针对Ruby和Ruby on Rails应用程序的JetBrains RubyMine IDE的发布。 Ruby社区以通常不使用集成开发环境(IDE)(例如.NET或Java开发人员使用)而闻名。 Ruby开发人员通常会坚持使用纯文本编辑器,例如TextMate,Vim和Emacs。
RubyMine 1.0仅在不久前发布,希望通过其许多旨在提高开发人员效率的功能吸引Ruby开发人员。
InfoQ有机会与RubyMine的首席开发人员JetBrains的Dmitry Jemerov讨论了RubyMine及其发展方向。
Robert Bazinet(RB):什么是RubyMine?
Dmitry Jemerov(DJ): RubyMine是来自JetBrains的Ruby和Rails项目的新IDE。 RubyMine是在IntelliJ IDEA平台之上构建的轻量级IDE系列中的第一个,其后是Web开发(HTML / CSS / JS / PHP),Python以及其他可能的IDE。
RB:您是谁,您在RubyMine项目中扮演什么角色?
DJ:我是RubyMine的开发负责人。 我的职责包括总体发布计划,设计产品的体系结构,在IntelliJ IDEA平台上工作(使其适用于RubyMine和其他产品),以及在需要时提供编码,错误修复和支持的常规帮助。
RB:谁是RubyMine的目标用户?
DJ:目前,我们的主要目标受众是Rails开发人员,尽管从事非Rails项目的Ruby开发人员也可以在RubyMine中找到许多有用的功能。 我们正在寻找在Ruby社区中流行的其他框架,并且将来的RubyMine版本中可能会支持其中的一些框架。
RB:那么,对于拥有IntelliJ的开发人员来说,他们可以获得一个可以为他们提供RubyMine本身所有功能的插件吗?
DJ:通常,是的,用于IntelliJ IDEA的Ruby插件和RubyMine具有相同的功能-它们是从单一代码库构建的。 但是,RubyMine使用的IntelliJ平台比现在公开可用的平台(IntelliJ 8.x)更新,因此由于此限制,某些功能可能在插件中不可用。 发行IntelliJ IDEA 9后,插件和RubyMine的功能集应相等。 您可以在http://www.jetbrains.net/devnet/docs/DOC-1146中找到更多答案。
RB:许多Ruby和Ruby on Rails开发人员都选择使用纯文本编辑器,例如TextMate,Vim和Emacs。 您看到那些用户迁移到RubyMine吗?
DJ:是的,我们已经看到一些用户已经在迁移,我们绝对希望使RubyMine对使用纯文本编辑器的每个人都有吸引力。 尽管纯文本编辑器和IDE之间始终会存在性能差异,但我们认为,出色的IDE所提供的生产力优势将弥补这一差异。 除此之外,我们计划使RubyMine进行的后台处理级别更具可配置性,以便希望以牺牲某些功能为代价来获得更快的IDE的人们可以从RubyMine中获得该功能。
RB:习惯于TextMate和使用TextMate捆绑软件的开发人员,他们在RubyMine中受支持吗?
DJ: RubyMine中提供了TextMate键盘架构,我们正计划为TextMate配色方案和代码片段创建转换器(以将它们转换为RubyMine实时模板)。
目前,我们除此以外没有其他计划,但我们欢迎其他想法,很高兴看到第三方插件提供此类功能。
RB: RubyMine与其他Ruby / Rails IDE(例如NetBeans或Aptana RadRails)有何不同?
DJ: RubyMine的一些创新功能是:
RB:试图实现代码补全的 IDE缺乏准确性而受到批评,RubyMine如何实现这一点以确保准确性?
DJ: RubyMine实际上了解Ruby代码的大多数语义,包括一些元编程功能,例如“ included” hook。 因此,几乎不需要显示项目中所有标识符的列表,而只能显示当前作用域中可见的标识符或成员的列表。
RB:我在加载RubyMine对JRuby的引用时注意到,在RubyMine中如何使用JRuby?
DJ: RubyMine的一些高级组件(重构支持,一些检查和意图动作以及其他)是用Ruby编写的,并在JRuby解释器下运行。 我们还计划允许用户在Ruby中编写自己的RubyMine扩展。
RB: RubyMine必须使用哪种类型的SDK来允许开发人员创建附加组件或插件?
DJ:到目前为止,我们还没有提供类似于IntelliJ IDEA的SDK。 这将在更高版本中可用。
但是某些IntelliJ插件已经可以轻松更新以与RubyMine一起使用。 这是一个示例: http : //plugins.jetbrains.net/plugin/?id=4255 。
而且,将有可能使用Ruby编写的脚本来扩展RubyMine。 您可以在<%RubyMine_Home%> / rb / scripts文件夹下看到几个这样的脚本。 在%RubyMine_Home%> / rb / api文件夹中,您可以找到Ruby API的初始版本。 这种方法仍在开发中,我们目前尚未积极推广。 将来,我们将添加带有用于处理脚本的UI的脚本管理器。 但这没有确切的时间表。
RB:您能否详细介绍一下RubyMine调试器?
DJ: RubyMine中的调试器使用与NetBeans和RadRails相同的底层引擎(ruby-debug-ide),并且具有大致相同的功能集。 它支持断点(包括条件断点),框架视图,局部变量视图,线程,监视,步进,表达式求值。 也可以在ERb视图中设置断点。 今天(5月14日)发布的RubyMine 1.0.5已添加了远程调试支持。
RB: RubyMine使用什么解析器?
DJ: RubyMine使用由JetBrains内部开发的自己的词法分析器和解析器。
RB: RubyMine支持哪种类型的重构支持?
DJ: RubyMine 1.0支持以下重构:
RB:您能否为读者提供一些有关下一版本或后续版本将提供哪些其他重构支持的详细信息?
DJ:这是计划在仲夏发布的RubyMine 1.2的重构列表:
RB: RubyMine内置了哪种类型的TDD或BDD支持,您如何看待这对开发人员是一个胜利?
DJ: RubyMine 1.0支持Test :: Unit和RSpec,我们目前正在研究Cucumber支持,该支持计划包含在RubyMine 1.1中。 Rails社区拥有非常强大的测试文化,因此我们认为测试支持是任何Ruby and Rails IDE的必备功能。
RB: RubyMine是否可以与所有类型的Ruby一起使用,包括MRI Ruby 1.8.x,1.9.x,JRuby,Rubinius,IronRuby等?
DJ:我们已经用MRI Ruby 1.8.x,JRuby,IronRuby和MacRuby测试了RubyMine。 目前,RubyMine不支持Ruby 1.9的新语言功能。 计划为即将发布的RubyMine版本之一提供支持。
RB:既然RubyMine支持IronRuby,是否已经在OS X上测试了该支持,并且IronRuby在Mono下运行?
DJ:我们尚未对此进行非常彻底的测试。 现成的支持不支持这种配置,但是可以通过一些手动配置使其运行。 如果有需求,我们将在以后的版本中提供必要的支持。
RB: IDE的未来版本中会出现什么?
DJ:可以在我们的网站上找到RubyMine未来版本的路线图:
值得强调的一些功能包括:
RB:发布时间表是什么样的?随着错误的解决,会有临时发布吗?
DJ:我们计划每3到6个月发布RubyMine的主要版本,并在每个主要版本之后发布一些错误修复程序。 在主要版本之间,Early Access Preview版本(当前开发版本的快照)将每1或2周发布一次。
RB:德米特里(Dmitry),谢谢您今天抽出宝贵时间与我交谈。 可以在JetBrains网站上找到有关RubyMine 1.0的更多信息。