写点什么

Rack:处理 HTTP 请求更简单

  • 2008-04-15
  • 本文字数:1010 字

    阅读完需:约 3 分钟

Rack 提供了 Web 服务器和 Ruby 开发框架之间的接口。它将框架编写者从为每个 Web 服务器单独编写一个处理模块的繁重负担中解脱出来,可以节省大量重复劳动。

Rack 相当易用,如下示例便可以让你创建一个运行于 Mongrel 上的极简应用处理器:

<pre id="a7yh">require 'rack'<br id="twiq"></br>app = lambda { |env| [200, {"Content-Type" => "text/plain"}, ['Hello World!']] }<br id="qsr7"></br>Rack::Handler::Mongrel.run(app, :Port => 3000)参数 env 包括一个环境变量和请求参数的散列。代码块的返回值由带有三个元素的数组组成:HTTP 状态码、响应头和响应体。

Rack 的创始人 Christian Neukirchen 为 InfoQ 分享了一些 Rack 的历史:

起初,我对 Ruby 的 Web 开发框架的状态感觉不太舒服,于是有了自己写的打算。正当这时, web.py 发布了,我很喜欢它那么精致而又易于维护。所以我开始编写自己的框架,但是没有成功,因为我写了很多计划外的东西,例如 Cookie 解析等等。实际上我从其他的项目中拷贝了一些代码过来,但是要做的工作依然令人厌烦。于是这个框架作废了。后来,我了解到了 Python 的 Nevow ,并试图去模仿它开发一些东西。但是就在我刚开始开发的时候,我发现我正在为不同的服务器重写辅助方法(helper)和适配器(adapter)。在深入的了解 Python 框架之时,我偶然发现了 WSGI ,我阅读它、喜欢它、简化它,并最终完成了 Rack 的原形。我重新组织了已写代码,并基于 Python Paste 的结构模块化,很快 Rack 0.1 就已经完成了。

当 Rack 可用之时,我依然没有喜欢的框架,所以我开发了 Coset ,这也是我最近一直在用的框架。它的设计灵感来自于 Camping web.py RESTlet

已经有相当多的框架提供了对 Rack 的支持

* Camping (包含在 Rack 发行版中)
\* Coset
\* Halcyon
\* Maveric
\* Merb
\* Mack
\* Racktools::SimpleApplication
\* Ramaze
\* Rails (第三方,与 thin 协同交付)
\* Sinatra
\* Vintage

Rack 可以和框架协同使用。例如,如果想简便而快速的处理一个确定的请求,Rack 的 Rack::Cascade 可以将几个应用级联起来。这篇 Ezra Zygmuntowicz 的博客讲解了如何通过 Rack 实现文件上传,而不需要访问整个 merb 栈。

接下来,Christian 计划稳定其规范,为 1.0 发布版做准备。

要了解更多 Rack 的信息,请访问 Rack 的官方网站。希望了解更深入的信息的话,这里还有一篇关于 Rack 的内部工作机制的 Euruko 07 论文

查看英文原文: Rack: HTTP request handling made easy

2008-04-15 21:511376
用户头像

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

关注

评论

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

高性能连接池之HikariCP框架分析:高性能逐条分解(架构师篇)

肖哥弹架构

Java HikariCP 连接池

多协议数据库管理工具:Navicat Premium (Win&Mac) 中文激活版

你的猪会飞吗

Navicat Premium Navicat Premium 16 Navicat Premium 中文版

文献解读-Profiling SARS-CoV-2 mutation fingerprints that range from the viral pangenome to individual infection quasispecies

INSVAST

基因数据分析 生信服务

万界星空科技MES系统车间设备管理模块的功能

万界星空科技

工业互联网 mes 设备管理 万界星空科技 生产设备管理

简化插件的添加和更新流程

NocoBase

开源 低代码 无代码 版本更新

强大的终端SSH工具:SecureCRT (Win&Mac) 激活版

你的猪会飞吗

SecureCRT下载 SecureCRT mac SecureCRT Mac破解版 SecureCRT 安装教程

Qwen2.5 大语言模型特点解析

Botnow

AI 大语言模型 LLMOps AI 智能体 Qwen2.5

京东商品详情数据接口:全方位解析商品信息的得力助手

tbapi

京东API接口 京东商品详情接口 京东商品数据采集

重磅消息!!CQ 社区版最新规划来了!

BinTools图尔兹

运维 dba 数据库管理 CloudQuery

诚邀见证2024九章云极DataCanvas算力包产品发布会!

九章云极DataCanvas

阿里 Qwen2.5 开源发布;YouTubeVeo 引入 Google DeepMind Veo 模型丨 RTE 开发者日报

声网

ETLCloud:新一代ETL数据抽取工具的定义与革新

RestCloud

数据库 ETL 数据集成 数据抽取

全面拥抱生成式AI时代 F5 AppWorld全球巡演中国站盛大启幕

科技热闻

智启未来!和鲸联合南开大学赵宏教授,共论 AI 挑战下的教育教学新理念与新方法

ModelWhale

Python 人工智能 高等教育

js基础之setTimeout与setInterval原理分析

京东科技开发者

软件系统反脆弱指南

FunTester

签署《AI安全国际对话威尼斯共识》 智源持续推动人工智能安全发展

智源研究院

9月20日,Bonree ONE 3.0 产品发布会北京站即将开启!

博睿数据

京东短网址高可用提升最佳实践

京东科技开发者

京东云JoyCoder荣获AI4SE“银弹”优秀案例

京东科技开发者

Rack:处理HTTP请求更简单_Ruby_Mirko Stocker_InfoQ精选文章