GMTC北京站两周后开幕,58个议题全部上线,点击查看 了解详情
写点什么

Anvil:Ruby MVC GUI 库

2008 年 2 月 21 日

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 年 2 月 21 日 22:001010
用户头像

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

关注

评论

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

夜莺二次开发指南-监控系统(3)

qinyening

滴滴夜莺 夜莺监控

【Mysql-InnoDB 系列】关于一致读

程序员架构进阶

MySQL 架构 innodb 28天写作

甲方日常 84

句子

工作 随笔杂谈 日常

区块链与物联网融合发展的机遇与挑战

CECBC区块链专委会

人工智能

28 天带你玩转 Kubernetes-- 第五天(玩转Docker)

Java全栈封神

Docker Kubernetes k8s 28天写作

时间之外的颜色「幻想短篇 5/28」

道伟

28天写作

读书笔记:《Remote》

lidaobing

28天写作 Remote

读《百度不需要用户》,我似乎懂得了领导者的无奈

李忠良

AI 企业

程序员如何变富

陆陆通通

赚钱 程序员赚钱 28天写作

28天瞎写的第二百一六天:LumaQQ 和 luma 二三事

树上

28天写作

项目管理系列(1)-如何开好一个周会

Ian哥

项目管理 28天写作

发达国家加紧数字货币政策布局

CECBC区块链专委会

数字货币

CSS13 - 定位

桃夭十一里

html/css

外行话之不玩游戏,怎么做好游戏?

Justin

游戏 28天写作 外行话

夜莺二次开发指南-用户资源中心

qinyening

滴滴夜莺 夜莺监控

一文学会Java死锁和CPU 100% 问题的排查技巧

AI乔治

Java 架构 死锁 cpu 100%

Deno 双周刊 #1 - Deno 获 2020 JS 开源年度突破奖

hylerrix

typescript deno Node 周刊 V8

【计算机组成原理】01 - 计算机系统概述

brave heart

计算机组成原理 28天写作

Experience Never Gets Old

三只猫

28天写作

未来五年数字经济九大技术趋势,区块链成数字时代刚需!

CECBC区块链专委会

人工智能

分布式唯一ID解决方案-雪花算法

JavaPub

Java 分布式

小马哥刷力扣 - LeetCode 9. 回文数

小马哥

LeetCode 算法和数据结构 28天写作

如何让开发人员接受DevSecOps

啸天

DevOps 开发者 DevSecOps 升职加薪 应用安全

一次慢查询暴露的隐蔽的问题

AI乔治

Java sql 架构 SQL优化

线程池是怎么回收空闲线程的?如果你认为有定时任务,那你就错了!

看点代码再上班

Java 程序员 后端 开发

一文带你快速入门Canal,看这篇就够了!

大数据老哥

大数据 实时数仓 canal

聚焦目标,团队工作不再一盘散沙(上)

一笑

管理 敏捷 目标管理 28天写作

电动汽车的小历史及汽车方面的一个基础概念 (28天写作 Day5/28)

mtfelix

28天写作 电动汽车

面试被问AQS、ReentrantLock答不出来?这些知识点让我和面试官聊了半小时!

Java鱼仔

Java 面试 并发 JUC

【Mysql-InnoDB 系列】事务模型

程序员架构进阶

MySQL 架构 innodb 事务 28天写作

关于时间管理的思考

.

28天写作

Service Mesh的演化与未来

Service Mesh的演化与未来

Anvil:Ruby MVC GUI库-InfoQ