写点什么

Anvil:Ruby MVC GUI 库

  • 2008-02-21
  • 本文字数:1724 字

    阅读完需:约 6 分钟

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

2008-02-21 22:001552
用户头像

发布了 197 篇内容, 共 56.4 次阅读, 收获喜欢 20 次。

关注

评论

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

ThreadLocal不好用?那是你没用对!

王磊

Java 后端 多线程 ThreadLocal 5月日更

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?

华为云开发者联盟

JavaScript node.js Serverless 云原生 大前端

零基础学习 NLP-DAY3

Qien Z.

动态规划 nlp 5月日更

Golang 工作区和 GOPATH

escray

学习 极客时间 Go 语言 5月日更

「学习笔记」《02 | 第一个程序:教你输出彩色的文字》之二

Nydia

学习

作为最好用的可观测平台,如何监控 Grafana

耳东@Erdong

Grafana Prometheus 5月日更

追寻软件定义的梦想汽车

车骑

自动驾驶 智能汽车 软件定义汽车 汽车制造

怎样做好服务提供方

程序员架构进阶

架构设计原则 服务化 28天写作 5月日更

VMWare中Ubuntu网络配置

进击的梦清

Linux 运维 vmware 网络配置

Python 包管理

若尘

Package Python编程 5月日更

网络攻防学习笔记 Day12

穿过生命散发芬芳

5月日更 网络攻防

OLAP计算引擎怎么选?

数据社

大数据 OLAP 5月日更

算法训练营 - 学习笔记 - 第六周

心在飞

无常中的僵硬与柔软

zhoo299

随笔杂谈 教育 生命 5月日更

深度剖析 | 关于数据锁定和读取一致性问题

VoltDB

数据库 数据分析 5G

xSocket框架接入需实现的接口

风翱

xSocket 5月日更

找Matlab代码,看这一篇就够了

攻城先森

matlab 工具分享 5月日更

一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序

老猿Python

【LeetCode】停在原地的方案数Java题解

Albert

算法 LeetCode 5月日更

鸿蒙系统之Codelab布局组件尝鲜

liuzhen007

华为 鸿蒙 5月日更

kotlin基础

ES_her0

5月日更

最近又有出什么新电影,要不要停泊片刻,与好友相约一起来去看呢?

叶小鍵

如何让消息队列达到最大吞吐量?

万俊峰Kevin

微服务 消息队列 Queue Go 语言

声网、新东方、伴鱼英语的音视频技术解读

Jessie

音视频 视频消音

Arthas-技术专题-使用指南

洛神灬殇

Arthas 5月日更

给Java小白,整理一套能上手的简单编程算法题!!!

小傅哥

Java 程序员 数据结构 算法 小傅哥

精选面试题教你应对高级iOS开发面试官(提供底层进阶规划蓝图)

程序员 移动开发 ios开发

cri-o 技术探秘2

xumc

Python自动打印文件

IT蜗壳-Tango

IT蜗壳教学 5月日更

Dubbo 本地调用

青年IT男

dubbo

不忘过去,不畏将来

小天同学

5月日更 汶川地震 不忘过去

Anvil:Ruby MVC GUI库_Ruby_Antonio Cangiano_InfoQ精选文章