提前锁票 InfoQ 最具价值感的视频栏目 | InfoQ 大咖说 了解详情
写点什么

被遗忘的 Ruby Web 开发框架

2007 年 11 月 12 日

随着 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:483430
用户头像

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

关注

评论

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

Week 02 命题作业

卧石漾溪

极客大学架构师训练营

ChaosBlade:从零开始的混沌工程(三)

郭旭东

混沌工程

江帅帅:精通 Spring Boot 系列 01

古月木易

Spring Boot

第二周学习总结

晓雷

江帅帅:精通 Spring Boot 系列 01

奈学教育

Spring Boot

第二周作业

andy

江帅帅:精通 Spring Boot 系列 02

古月木易

Sprint Boot

week2 学习总结

Geek_2e7dd7

架构师训练营第二周作业

James-Pang

极客大学架构师训练营

环信助力中国游戏社交类APP出“东南亚”记!

DT极客

TCP/IP协议族终于更新(第4版)了,世界著名计算机精选PDF美滋滋

互联网架构师小马

Java 数据库 TCP 网络协议 计算机

第三周作业三:优化 Cache 类的设计

远方

学习总结—第二周

于江水

架构是训练营

架构师训练营 第二周作业

大丁💸💵💴💶🚀🐟

江帅帅:精通 Spring Boot 系列 02

奈学教育

Spring Boot

服务治理之轻量级熔断框架:Resilience4j

CoderJ

架构师训练营第二周课后作业一

不谈

极客大学架构师训练营

程序员人人都会遇到的“画饼”,一招教你破解

金刚小书童

职业规划 技术管理 程序员成长 程序员次第 画饼

第二周作业二:描述熟悉的框架,是如何实现依赖倒置原则

远方

JVM的未来——GraalVM集成入门

孤岛旭日

Java 云原生 JVM GraalVM

数据库周刊28│开发者最喜爱的数据库是什么?呼兰脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;MySQL架构选型;Oracle文件损坏处理……

墨天轮

数据库 oracle 阿里云

Week2命题作业

星河寒水

Python类型标注

Vincent

编程语言 python3.7

Python与文件流

Vincent

Python 编程 文件管理

解析 Swift 中的 @discardableResult

SwiftMic

swift

第二周作业

远方

Java参数传递分析

游侠最光阴

Java

week2 作业

Geek_2e7dd7

数据分析师这个岗位,可能近几年会消亡

峰池

数据分析 数据 互联网人

02周作业——面向对象设计原则

dao

面向对象设计 极客大学架构师训练营 作业

命题作业—第二周

于江水

极客大学架构师训练营

打造 VUCA 时代的 10 倍速 IT 团队

打造 VUCA 时代的 10 倍速 IT 团队

被遗忘的Ruby Web开发框架-InfoQ