被遗忘的 Ruby Web 开发框架

  • Sebastien Auvray
  • 郑柯

2007 年 11 月 12 日

话题:RubyWeb框架Ruby on Rails语言 & 开发

随着 Ruby on Rails 的成功,是否还有其他 Ruby Web 开发框架的生存空间呢?Rails 尽人皆知,有人甚至可能听说过 Merb 和 Camping,但是否有人知道 Nitro、Ramaze、Sinatra、IOWA 或者 Cerise?InfoQ 对这些框架进行一个快速浏览,并试图解读他们为业内人士欣赏(或忽视)的原因。

之前我们讨论过Merb,这也许是完成度最高的 Rails 替代者。Merb 项目的活跃程度非常高,并且在一些情况下得到了实际使用。可以说它是与 Rails 最为接近的 Ruby Web 开发框架。

Camping将自己定义为一个代码量保持在 4k 字节大小以下的 Web 开发框架。这个项目已创建了 22 个月,并由whytheluckystiff维护。一个完整的 web 应用可以在单一文件中定义,同时遵循 MVC 框架(这使得 web 应用以后更易于移植到 Rails 之上)。Camping 使用 ActiveRecord 作为 ORM 解决方案;模板系统使用Markaby。Camping 的开发一直以稳定的步伐向前推进。

Nitro是一个有三年历史的“Web 2.0”框架。在一段时间销声匿迹之后,开发者 George K. Moschovitis 又开始活跃起来。Nitro 应用的服务器端以 Ruby 写成,客户端以 Javascript 开发。Urubatan 最近对其进行了评价。与 Rails 注重按照习惯编程相反,Nitro 更加灵活。Nitro 支持开发基于 Model-View-Controller 的应用,同时支持非 MVC、php 风格的应用开发。Nitro 使用 xhtml 文件,并定制的 Ruby 标签作为模板系统。Nitro 还使用了它自己的持久层,名为 Og(ObjectGraph)。Og 允许 arbitrary Ruby 对象的序列化。在 attr_accessor 中标记为 Object(或 Array 或 Hash)之后,引擎会序列化对象的 YAML 转储堆。Og 同时支持任意对象图。Og 提供自动化数据库进化功能:当 Ruby 类变更后,Og 会进行自动检测,同时改变对应的数据库。有些人总是会忘掉 ActiveRecord 的 Migration 功能。

Ramaze是一个存在了 6 个月的轻量级 Ruby Web 开发框架。它在构建时基于下列广为人知的 Ruby 原则:

  • KISS 原则(Keep It Super Simple)
  • POLS 原则(最小惊讶原则:Principle Of Least Surprise)
  • 模块化设计
  • 最小化依赖
  • 文档
  • 开放式开发
  • BDD 开发 / 实例
Ramaze 是 MVC Web 开发框架,使用自己名为 Ezamar 的模板系统。但是你同样可以使用 Markaby、HAML、Liquid 或 ERB 来替代 Ezamar。Ramaze 不提供默认的 ORM(对象 - 关系映射),你可以使用你自己的选择:ActiveRecord、Og... 它支持诸如 Cache 等高级使用,web 应用可以通过 Mongrel 或 Evented Mongrel 来搭建。你可以在Ramaze wiki上发现更多细节。

Sinatra是一个刚开发了一个月的 DSL web 开发框架。Ron Evans 对其进行了简要评价。它与 Rails 的主要差别在于它不是基于 Model-View-Controller 模式的框架。Sinatra 是基于最小化的DSL 语法开发的,它的小型基础核心中不包括诸如 ActiveRecord 这样的模块。通过使用 get/post action 定义,Sinatra 具备动态路由定义功能。Ron 指出,Sinatra 不是为 Robust web 应用开发的,而是为了用来搭建小型的原型,其中的混合业务逻辑和展示层并不是问题。

那这样做有什么好处呢?API 实现、快速的最小化应用以及那些不需要 Rails 中的功能 (比如 ActiveRecord)的 web 应用开发。可以用来对面板最小应用进行控制,或者是 widget。

与其他框架相比,IOWA在近三年的时间里都不活跃。Cerise有一年的时间都没有活跃,因此我们不会深入探讨它们。

像 Rails 一样,Nitro 有其自己的完整核心,其他 Web 开发框架试图越小越好,并允许用户自由使用他们喜欢的 ORM、模板系统等等。即使这些框架可能缺乏文档,甚至有些框架不具备这么多的功能、流行程度、对 Rails 的使用等,它们仍然值得一看。

查看英文原文:The Forgotten Ruby Web Frameworks
译者简介:郑柯,目前任职《程序员》杂志社高级编辑,有志于在中国的软件开发业界推广 Agile 的理念和方法论,笃信以人为本,关注 Ruby,关注敏捷,关注人。 参与 InfoQ 中文站内容建设,请邮件至china-editorial@infoq.com
RubyWeb框架Ruby on Rails语言 & 开发