装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

被遗忘的 Ruby Web 开发框架

  • 2007-11-12
  • 本文字数:1604 字

    阅读完需:约 5 分钟

随着 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

2007-11-12 07:483669
用户头像

发布了 479 篇内容, 共 141.1 次阅读, 收获喜欢 42 次。

关注

评论

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

第八周总结

纯纯

架构方法

Eddy.何

极客大学架构师训练营 命题作业

第10周总结

纯纯

架构师训练营第一章作业二 - 学习总结

zenfery

极客大学架构师训练营

架构师训练营第一期作业

sean

架构师训练营Week1 - 学习总结

极客大学架构师训练营

【第一周】课后作业

云龙

极客大学架构师训练营

第一周作业

极客大学架构师训练营

性能测试总结

纯纯

架构师训练营第一章作业一:就餐管理系统UML图

zenfery

极客大学架构师训练营

架构师一期二班-吴水金-第一课总结

吴水金

学习

第1周内容总结

paul

食堂就餐卡设计

Bear

极客大学架构师训练营

架构师训练营第1期-Week1-食堂就餐卡系统设计

鲁小鲁

极客大学架构师训练营 食堂就餐卡系统设计

合并两个单向链表

纯纯

第一周作业

kevin

极客大学架构师训练营

架构师训练营第1周课后练习

叶纪想

极客大学架构师训练营

食堂就餐卡系统设计

jizhi7

极客大学架构师训练营

潮汕之旅第一站

熊斌

摄影 游记

week12--课后作业

Geek_165f3d

架构师训练营第 1 期-week1-食堂就餐卡系统设计

习习

第一周课后练习 - 作业2

致星海

「架构师训练营第 1 期」第一周作业

张国荣

极客大学架构师训练营

架构师训练营第一周命题作业

一马行千里

极客大学架构师训练营

【架构师训练营】第一周作业:画图

MindController

架构师

为什么开发工程师要架构图

Bear

极客大学架构师训练营

Python 之父为什么嫌弃 lambda 匿名函数?

Python猫

Python 学习 编程

第一周课后练习 - 作业 1

致星海

架构师第一期作业2

sean

架构师训练营第一周作业 食堂就餐卡系统设计

帅到没朋友

极客大学架构师训练营

食堂就餐系统

focus

被遗忘的Ruby Web开发框架_Ruby_Sebastien Auvray_InfoQ精选文章