Anvil:Ruby MVC GUI库

Anvil是一个打算在Ruby开发跨平台GUI应用中大展宏图的MVC框架。目前它需要WxRuby——WxWidgets这个流行的C++框架的Ruby绑定——的支持,不过它的目标是成为一个与工具无关的抽象层(例如,它也把RubyCocoa和FxRuby作为了目标方向)。虽然这个项目目前还正处于发展初期(当前的版本是0.0.1),但它已经引起了Ruby社区的关注,它的DSL可能会使Ruby中的GUI开发如同当前使用Rails和Merb框架开发Web应用一样简单。

我们与Anvil框架的作者Lance Carlson进行了座谈,希望能够了解他对项目的展望和未来计划。

Antonio Cangiano (InfoQ):你目前是自己独立开发着Anvil。你能讲一下你自己和你的Ruby生涯么?
Lance Carlson:嗯,目前Anvil的代码都是我自己写的,不过我已经带了几个人进来干活,这个情况很快就会改变了。到目前为止,这个项目要得到任何帮助还是非常困难的,但我希望这也能很快好转!说一下我自己吧,我在RoR方面已经有了三年的编程经验,大多数时间都是作为一个订约人(Contractor)工作的。最近我被 Engine Yard雇了,在时间允许的情况下会参与某些著名的开源项目,如Merb、Sequel和其它一些相关项目。

AC:你对Ruby方面GUI开发的现状有什么看法呢?又是什么想法促使你启动了Anvil项目?
LC:比起其它语言,目前Ruby的GUI开发包还是相当新而且相当原始的,甚至于相应的框架都很少。而且目前可用的一些工具包也是倾向于使用类似C的语法,而不是用Ruby-esk的DSLs来表示代码。我对Anvil的构想就是创建一个框架,把GUI工具包和Ruby狂热者熟知并热爱的Ruby语法糖(Syntactic Sugar)之间的断链连接起来,同时也为敏捷GUI开发环境提供必需的工具支持。这些工具包括有一个测试套件、MVC架构、代码生成器、基于gem的插件、环境场景,以及轻便的应用程序配置。将来我打算支持与所有流行ORM的集成(ActiveRecord、Sequel、DataMapper),并支持Ruby Cocoa和FxRuby,在WxRuby以外还会支持其它GUI工具包。等Anvil成熟以后,与ActiveResource的集成也会被纳入考虑范围。

AC:从我的角度来看,感觉Anvil打算为Ruby的桌面程序开发提供支持,就像Rails为Web开发所做的一样。你在Engine Yard和Merb项目中的经历对Anvil有什么影响吗?你能否再讲一些有关项目架构的事情?
LC:Anvil框架的很多优秀思想都是在Merb的开发经历中学到的,比如Anvil控制台、配置程序设置、环境、插件系统等等。我主要想从Web框架中借鉴的就是把开发过程自动化。Anvil框架剩下的部分会使用Ruby目前可用的种种GUI工具,把它们的语法用DSL更加声明式的表示出来,从而自动化开发体验。这种更高层的抽象应该可以把开发人员从为应用程序的GUI部分的担忧中解放出来,让他们更多的专注应用的核心。

AC:一个月以前刚发布了0.0.1版,你紧接下来有什么计划呢?
LC:在下个版本中我计划解决前一版中的问题,并加入一些新特性。我打算引入一个从Merb的基于gem的插件系统源生出来的一个插件框架。我还希望用widgetwrapper所提供的DSL覆盖WxRuby的更多特性。

AC:Anvil并不是Ruby上唯一的一个GUI框架。Why(The Luck Stiff)的(Ruby)Shoes也是一个微型的DSL框架,它也在尝试简化在Ruby里创建GUI的工作。Anvil和它的区别在哪里?你的项目对Ruby开发人员的吸引力在哪里呢?
LC:Anvil 的一些灵感也是来自于Why的Shoes。从他的DSL里面,我意识到了Ruby在表示GUI应用时能够起到多么强大的作用。Anvil的区别是,它计划成为Ruby GUI框架的一个一步到位的解决方案,正如Web开发中的Rails一样。对于轻量级应用而言,Shoes仍会继续作为一个不错的备选方案,不过如果你想要一个完整的解决方案,同时还可以使用任意GUI工具包时:来用Anvil吧。Ruby开发人员应该参与到Anvil的开发进程来,扩展Ruby可以使用的技术范围。框架的通用布局将会让Rails开发人员没有丝毫陌生感,而且也不大可能有踏入“GUI大陆”的水土不服症状。让Rails开发人员可以用最小的代价转向GUI开发也是Anvil的目标之一。

补充阅读:请关注InfoQ先前关于Ruby GUI开发的报导

查看英文原文:Anvil - Ruby MVC GUI library

你可能感兴趣的:(Anvil:Ruby MVC GUI库)