写点什么

简单的深邃:Sinatra 1.0 将至

  • 2010-04-27
  • 本文字数:1670 字

    阅读完需:约 5 分钟

自 2007 年末发布以来,轻量级的 Web 框架 Sinatra 便吸引了众多开发者的目光。现在,在 Google 中搜索关键字“Sinatra”,第一位便是 Sinatra Web 框架,比 Frank Nancy 还要多。InfoQ 采访了 Sinatra 项目的创始人 Blake Mizerany ,来了解更多关于 Sinatra 的信息和 1.0 版本的发布日期。

Mizerany 指出:1.0 版本的价值,并不是因为新功能的增加,而是由于旧功能的移除:

现在我们使用的是 Tilt 模板,这个工具能够快速地生成大部分的代码。扩展 API 已经确定,在 0.9 版中决定废弃的 API 也已经全部移除了。

否则代码就和之前的发布版本很相似了。

和 Rails 不同的是,Sinatra 并不是一个 MVC 框架;相反地,人们将其描述为“一种使用 Ruby 创建 Web 应用的领域专用语言”。它提供了一种简单的方式,来帮助开发者使用 REST 范式去响应 HTTP 请求:

Sinatra 是直接映射到 HTTP 的。它并非隐藏了复杂性,而是将简单性展示出来。HTTP 并不难,HTML 也并不难,没有必要去否定它们。直到亲自去尝试一下,人们才会发现看上去很“基础”的东西其实并不那么简单,很难继续深入下去。

Sinatra 程序小到可以放到一个文件中,每个 route 定义由一个 HTTP 方法和一个 URL 模式组成。例如,Sinatra 的“Hello world”看起来应该是这样的:

复制代码
require 'rubygems'<br></br>
require 'sinatra'<br></br>
get '/hi' do<br></br>
  "Hello World!"<br></br>
end<br></br>

在各种各样的模板系统中(例如 Erb、Erubis 和 HAML),都可以使用 Sinatra。但是,它没有一些 MVC 框架所应该拥有的功能,例如表单构造器和数据库连接层。这种简单性使得它能够在多种 Ruby 实现上运行,例如 Ruby 1.8.x 和 1.9、JRuby 以及 MacRuby 等等。

Sinatra in the Wild 页面按时间顺序记录了 Sinatra 的使用者,列出了大量使用此框架的 Web 应用和站点。包括 GitHub 和 Gemcutter,还有 Heroku、Engine Yard 以及 ENTP 这些公司。最近 NewRelic 也宣布在其RPM Ruby Agent 性能监视工具中采用Sinatra

Sinatra 1.0 也引入了一些新的功能。Sinatra 在模板渲染中采用的是 Tilt 框架,从而可以支持模板缓存、一致性模板堆叠和新的模板引擎。Erb、Erubis 和 HAML 模板现在只是在第一次使用的时候才编译,因此在渲染性能上有 5 到 10 倍的提升。不仅如此,还可以通过一个新的标志来控制每次请求时模板文件是否从磁盘上重新读取并重新编译。

用户在升级的时候可能会遇到一些小问题,需要注意如下问题,参见 FAQ

如果你一直跟随着官方文档的脚步,并且废弃掉了文档中提及需要废弃的功能,你的程序在 Sinatra 1.0 下将会工作的很好。但是最新发布的 Sinatra 0.9.x 版中一些功能在 1.0 版中会警告已经废弃。 […] 在 Sinatra 0.9.x 版中也修正了一些安全隐患以及缺陷,但是没有加入新的特性。

Sinatra 1.0 版的开发进度缓慢的原因,是其采用了语义版本模型

所有的 1.x 版都会向后兼容最初的 1.0 版。我们在很长一段时间内不会修改 1.0 的特性,所以我们不需要对接口的变化情况进行监控和检查。

当谈及到将来的时候,Mizerany 预测 Sinatra 将会持续地受到关注:

Sinatra 的简单性能够让开发者去做想做的事情。我们想继续保持简单,而且也非常好奇这样发展下去到底会怎样。我们不会通过秘密的 IRC 或者 Campfire 聊天室来决定 Sinatra 的下一步计划,所有的计划都是公开的。

Mizerany 尤其称赞了 Sinatra 对扩展的支持,他说:“没有特定的标准库或者初始脚本,它们仅仅是一些程序库而已,可以作为第三方库或者像 gems 一样去使用。” 大量可用的 Sinatra 扩展能够完成诸如通过 ActiveRecord 和数据库交互、 Sequel ORM 验证以及异步任务等功能。

Sinatra 的思想也为众多其他相似的框架带来灵感,包括 Javascript 的 Sammy 、Clojure 的 Compojure ,以及 Scala、PHP、.NET 和其他语言的框架。Heroku 也是 Sinatra 开发的支持者:

Sinatra 的成功源自社区。Heroku 给我时间来支持 Sinatra,并且一直在鼓励我前进。社区应该占 99.9999% 的功劳。每次我在 maillist 中看到问题的时候,都已经有热心人热情地解答了它。

查看英文原文: Deceptive Simplicity: Sinatra Turns 1.0

2010-04-27 21:483370
用户头像

发布了 90 篇内容, 共 37.0 次阅读, 收获喜欢 5 次。

关注

评论

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

手把手教你本地 k8s 集群搭建云原生 Tekton CICD 流水线

比伯

Java 大数据 编程 架构 计算机

亲测三遍!8步搭建一个属于自己的网站

华为云开发者联盟

MySQL Linux 开发者 网站 华为云

微众银行大数据平台建设方案

康月牙

大数据 开源 金融 平台 微众银行

Github标星67.9k的微服务架构以及架构设计模式笔记我真的爱了

Java架构之路

Java 程序员 架构 面试 编程语言

《迅雷链精品课》第三课:区块链主流框架分析

迅雷链

区块链 区块链方案 区块链+ 区块链应用

数据结构与算法系列之递归(GO)

书旅

数据结构与算法 Go 语言

Flutter Bloc模式

码爷

flutter ios 程序员

“双11”购物狂欢节,所有女生走进了谁的直播间?

博睿数据

APM AIOPS 拨测 直播 用户体验

加快脑动脉瘤检测,AI来了

华为云开发者联盟

人工智能 学习 算法 华为云 医疗AI

美国区块链政策大盘点

CECBC

区块链 政策 货币

多线程并发主题-ThreadLocalRandom类

公众号:程序猿成神之路

Java 并发编程 线程

数字投票时代即将到来

CECBC

数字投票

企业级软件的核心价值

Philips

敏捷开发 企业应用

握草!美团P8整理的280页超详细Docker实战文档简直太香了,让你对如日中天的Docker有更深入的了解。

Java架构之路

Java 程序员 架构 面试 编程语言

云图说|多模态AI开发套件HiLens Kit:超强算力彰显云上实力

华为云开发者联盟

人工智能 开发者 物联网 机器人 华为云

IMC总决赛精彩对战应接不暇,英特尔酷睿极致性能燃爆比赛现场!

E科讯

阿里大牛说:你凭什么搞不懂SpringBoot,Cloud,Nginx与Docker

小Q

Java 学习 编程 架构 面试

Teambition 网盘 VS 阿里云盘:阿里这个浓眉大眼的也开始玩赛马了?

郭旭东

阿里云 阿里云网盘

【涂鸦物联网足迹】涂鸦云平台接口列表

IoT云工坊

人工智能 接口 物联网 API 智能家居

JVM真香系列:方法区、堆、栈之间到底有什么关系

田维常

Java JVM 堆栈 方法区 Java虚拟机

区块链有了几个新“标准”!

CECBC

区块链 版权保护

高交会科技盛宴:“科技改变生活,创新驱动发展”

13530558032

C++多元组tuple使用方法?你熟悉吗?快来看看吧

良知犹存

c++

《精通Tomcat:Java Web应用开发、框架分析与案例实战》.pdf

田维常

tomcat

HTTPDNS开源 Android SDK,赋能更多开发者参与共建

移动研发平台EMAS

android 阿里云 开源 httpdns 移动研发平台

LeetCode题解:剑指 Offer 22. 链表中倒数第k个节点,双指针,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

轻松云上揽胜中华,靠的就是这份聪明的“地图”!

华为云开发者联盟

MySQL 数据库 postgresql AI 地图

java-File对象

Isuodut

DeFi质押挖矿系统开发技术

薇電13242772558

区块链 defi

为什么我就面试阿里P6,好不容易过2面,3面来个架构师来吊打我?

小Q

Java 学习 程序员 架构 面试

【Swift实现代码】iOS架构模式之MVP

码爷

ios swift 架构

简单的深邃:Sinatra 1.0将至_Ruby_Paul Blair_InfoQ精选文章