写点什么

RubySpec 官方网站及其参与 Google 编程之夏的学生

2008 年 5 月 27 日

Brian Ford 宣布开通了 RubySpec 项目的官方网站

该项目的目标是基于 RSpect 风格的规范(specs)为 Ruby 编程语言建立一个完整的可执行规范。这个项目一开始只是一个早期 Rubinius 开发者眼里的小火苗。后来它发展到由热心的人们贡献的超过 6900 个实例和 25600 个期望。

Ruby 语言并没有一个正式的标准来规定它的表现和性能。而且 Ruby 的实现版本越来越多,因此必然需要一个规范。在现代软件开发的精神下,可执行的规范要好于用其他形式的规范。因为它能够执行,而且几乎可以立即给出反馈。这样就很容易对一致性进行验证。

Federico Builes 和 Arthur Schreiber 两位同学正准备参加即将开始的 Google 编程之夏(Google Summer of Code)活动。他们打算对 Ruby 规范进行改进和扩展。我们访问了他们两个,谈了他们准备在这个夏天做哪些工作。

Federico Builes 是哥伦比亚大学的学生。他是两年前在寻找用什么来代替 C 时开始接触 Ruby 的。现在他正在参与 Rubinius 项目的开发。我们问了他在这次在 Google 编程之夏活动中的目标:

项目的第一部分是为一些标准库和内核库写规范(测试),包括 REXML、YAML、 Logger、Socket 和 IO。剩下的部分(由 Charles Oliver Nutter 所建议)是看一看其他 Ruby 实现版本所使用的不同的测试用例,并把它们移植到 Rubyspec 中,使我们的规范尽可能完整。

我们还问了 Federico 怎样找出缺少测试的代码:

由于我已经确定了要用的哪些库,我就直接找出这些库的文档,查看一个方法的功能,然后写出相应的规范。如果这个方法像文档所写的那样工作,就非常好。如果不是,我就去读源代码,看看到底是怎么回事。先 阅读文档而不是直接去读代码的一个好处是,你能经常看到有些东西不按照要求来工作。当我阅读 REXML 规范时,我在一天内就为一些小错误和过时的文档发了 三四个补丁。现在,他们在 Ruby 1.9 中都修补好了。由于 Rubyspec 是 MRI 的一部分,我想这类错误应该会被很快发现并修补。

另外, MSpec 是一个我们在 Rubyspec 中使用的 RSpec 复制品,它能帮你为还没有测试的库建立标志,然后你可以把它们标记成未完成、就绪、在 X 或 Y 实现版本上失败等状态。这样你就能看到一些库会在某些 Ruby 实现版本中出问题,然后着手去解决。慢慢地你就会发现测试用例覆盖了所有的改变。

19 岁的 Arthur Schreiber 来自德国,他是另一个参与此项目的学生。他从 2007 年 5 月开始接触 Rubinius,提交了许多补丁,修补了一些错误和许多文档。我们问了他同样的问题:

在这次 GSoC 活动中,我的目标是为一些 Ruby 标准库建立或者改进规范,包括 CGI、StringIO、Net、Set 以及其它一些更小的库。

我们使用的主要工具之一是 MSpec。它是一个兼容 RSpec 的 BDD 框架,是由 Rubinius 团队的 Brian Ford 开发的。MSpec 的目的是通过回避 Ruby 语言的高级特性,让未完成的实现也能运行规范。

MSpec 支持一种基本的覆盖功能,可以指出尚没有规范的方法。可是这个功能已经被去掉了,分别放进了 MSpec 和 Rubyspecs 各自的库里。Brian Ford 准备尽快把这个功能重新加进去。还有一种想法,是采用 RCov 来检查标准库的规范覆盖情况。

如果你想做一些贡献,Vladimir Sizikov 写了一篇 RubySpec 快速入门指南,讲解了入门的基本步骤。要了解该项目的详细情况,请访问 RubySpec 网站

查看原文: The Official RubySpec Website and Its Google Summer of Code Students

2008 年 5 月 27 日 09:56453
用户头像

发布了 33 篇内容, 共 35150 次阅读, 收获喜欢 0 次。

关注

评论

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

POJO类中布尔类型为啥不让用isXxx命名

Java课代表

实时即未来?一个小微企业心中的流计算

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

【面向对象】—依赖倒置、接口隔离

不二架构

极客大学架构师训练营 依赖倒置 接口隔离原则

记录一下,我的记录之道

非著名程序员

学习 程序员 提升认知 工作效率

使用WebMaker快速预览Ionic页面效果

davidce

Ionic WebMaker 混合应用开发

【大厂面试06期】谈一谈你对Redis持久化的理解?

NotFound9

数据库 redis 后端

Flink on Zeppelin (4) - 机器学习篇

章剑锋_Jeff

大数据 flink 学习 流计算 Zeppelin

图解 Vue1.0 响应式系统

前端黑板报

源码分析 Vue Reactive

28岁程序员期权过亿,彪悍从字节退休,网友:酸了酸了!

程序员生活志

程序员 字节跳动 开发 退休

第二周-作业

JI

极客大学架构师训练营

第二周-总结

JI

极客大学架构师训练营

数仓大法好!跨境电商 Shopee 的实时数仓之路

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Apache Flink 误用之痛

Apache Flink

大数据 flink 流计算 实时计算 数据处理

软件设计原则作业

Tech Guy

极客大学架构师训练营

【玩转写作平台】如何让专业编辑青睐你的文章?被推荐置顶?

InfoQ写作平台官方

写作平台 InfoQ 玩转写作平台

架构师训练营第二周课程感想1

tuuezzy

Java 架构师

面向开发者的 WSL2 安装指南

simpleapples

Python golang Windows 10 wsl

Flink作业问题分析和调优实践

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

TiDB原理解析

Chank

第二周作业

Diven

使用wavm运行wasi wasm程序

Foliage

XSKY发布S3 Console,助力企业轻松玩转非结构化数据可视化管理

XSKY融合存储

第二周作业

晨光

数仓系列 | 深入解读 Flink 资源管理机制

Apache Flink

大数据 flink 流计算 实时计算

从字符串到常量池,一文看懂String类设计

程序员DMZ

JVM 常量池 intern

当你启动Redis的时候,Redis做了什么

老胡爱分享

redis 源码分析 面试题

Flink 在快手实时多维分析场景的应用

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

二叉查找树的解读和实现

ytao

Java 数据结构

《实现领域驱动设计》拆书稿 DDD入门 & 领域、子域和限界上下文

三界

架构 领域驱动设计 DDD

免费下载 | 阿里云实时计算整体解决方案白皮书重磅发布!

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

第二周总结

晨光

RubySpec官方网站及其参与Google编程之夏的学生-InfoQ