写点什么

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:001791
用户头像

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

关注

评论

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

Android C++系列:Linux网络(一)网络模型

轻口味

android 28天写作 12月日更

Spring 扩展之深入分析 InitializingBean 和 init-method

chenssy

死磕 Java 死磕 Spring

Spring 扩展之深入分析 BeanPostProcessor

chenssy

死磕 Java 死磕 Spring

MySQL性能测试之insert&delete【FunTester框架】

FunTester

MySQL 性能测试 测试框架 FunTester delete

字符串可以这样加索引,你知吗?《死磕MySQL系列 七》

咔咔

MySQL 字符串 加索引

Spring 扩展之深入分析 Bean 的类型转换体系

chenssy

死磕 Java 死磕 Spring

Spring 扩展之自定义类型转换器

chenssy

死磕 Java 死磕 Spring

无法复现的“慢”SQL《死磕MySQL系列 八》

咔咔

MySQL 慢SQL

Spring 扩展之之 PropertyPlaceholderConfigurer 的应用

chenssy

死磕 Java 死磕 Spring

Spring 扩展之深入分析 PropertyPlaceholderConfigurer

chenssy

死磕 Java 死磕 Spring

作业1

施正威

浅谈MySQL中的游标

麦洛

MySQL 游标

TypeScript 之 Class(上)

冴羽

JavaScript typescript 翻译 大前端

Spring 扩展之深入分析 PropertyOverrideConfigurer

chenssy

死磕 Java 死磕 Spring

华为云联合HarmonyOS重磅发布智联生活行业加速器

华为云开发者联盟

华为云 智联生活

低代码实现探索(七)赋能产品架构如何做定制化

零道云-混合式低代码平台

说说个人影响力

张老蔫

28天写作

Spring 扩展之深入分析 BeanFactoryPostProcessor

chenssy

死磕 Java 死磕 Spring

大湾区的“科创土壤学”

脑极体

手把手教你实现网页端社交应用中的@人功能:技术原理、代码示例等

JackJiang

即时通讯 IM web socket

MySQL统计总数就用count(*),别花里胡哨的《死磕MySQL系列 十》

咔咔

MySQL conut

Spring扩展之 深入分析 Aware 接口

chenssy

死磕 Java 死磕 Spring

年后跑路第一战,从Java泛型学起!

麦洛

Java Java泛型

什么?还在用delete删除数据《死磕MySQL系列 九》

咔咔

MySQL delete

为什么MySQL字符串不加引号索引失效?《死磕MySQL系列 十一》

咔咔

MySQL 索引失效

打开order by的大门,一探究竟《死磕MySQL系列 十二》

咔咔

order by MySQL高级

10 款你不知道的 Linux 环境下的替代工具!

JackTian

GitHub Linux 程序员 运维 命令行终端

在K8s里部署Eureka集群

xiaoboey

Kubernetes Spring Cloud Eureka Gateway 服务发现

库存管理系统到底有什么作用?

低代码小观

CRM 企业管理系统 ERP 库存 CRM系统

Python Qt GUI设计:如何调整组件布局比例?(拓展篇—1)

不脱发的程序猿

Python PyQt GUI设计 上位机 调整组件布局比例

38 K8S之CNI插件与选型

穿过生命散发芬芳

k8s 28天写作 12月日更

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