`
bellstar
  • 浏览: 150653 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rack介绍

    博客分类:
  • ruby
阅读更多
原文http://chneukirchen.org/blog/archive/2007/02/introducing-rack.html
在web框架实践中我感到痛苦,我发现有许多本质上做相同事情的重复代码。
而每一个ruby web框架开发者还在不断的开发出他需要的web服务程序。
但愿,框架使用者为他们的选择感到满意。
然而,从本质上说,处理HTTP是很容易的。就是你获得一个请求,返回一个响应。
我们可能这样做这件事:由一个类CGI环境接收一个标准http请求的hash,
返回一个由三部分(状态status,头headers,主体body)组成的响应。

这可以很容易地映射为一个ruby方法调用,如下范例
class HelloWorld
	def call(env)
		[200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
	end
end

你所看到就是一个最简单的Rack应用程序

Rack的目标是提供一个最小的API连接到web servers和web框架

非正式情况下,一个Rack应用程序会调用一个带hash参数的#call方法,
它返回一个由status, headers, body组件的数组。body需要调用#each方法,它一个接一个的返回字符串到body中。
这个给定的hash参数包含一个环境变量的CGI-ish集合和一些特定值,
(env['rack.input'])或者有关运行时环境的信息(例如env['rack.run_once'])

请记住Rack主要是用于框架开发者,通常不暴露给框架使用者,rack刚开始看起来也许有点笨拙,
或者你也许期望更多"优美"的API,但API就应该是简单的(可方便用作lambda)而不是难于接受(暴露的适配器仅仅只有5行代码)


在上面这个最小化API里,有一个库为经常做的事(像query parsing或cookie处理)提供了很多便利(Rack::Requrest和Rack::Response),
愿意的话,你可以免费使用。

但是Rack真正酷的地方在于它提供了一种极其简单的方式组合web应用程序,
毕竟,它仅仅是Ruby对象和它的一个方法的事。而且调用#call不必是一个真实的web server,也可以是另一个程序!
让我向你展示一些已经存在的Rack filters(或者叫中间件):
  • Rack::ShowExceptions 捕获所有抛出的异常然后用500-page包装好它们,源自Django(一个python web框架)
  • Rack::CommonLogger Apache风格的日志
  • Rack::URLMap 根据path和host跳转到不同的Rack应用程序(一个非常简单的路由)

还有另一个工具,Rack::Lint,它检查你的应用程序和filter和其他的filter在一起是否运行良好

如果你的web框架支持Rack,有以下好处:

       
  • 提供一个Rack处理器为web servers工作
  •    
  • 在没有扩展配置的情况下让多个应用跑在一个web servers上
  •    
  • 易于测试(集成和功能测试),从此任何东西可mocked. (Helpers for this are coming soon, too.)
  •    
  • 一个很大的不同,从此程序员可以专注于特别的部分上,而停止在烦人的事情上浪费时间。
  •    
  • 更多协作特性: 比较 “That upload handler you wrote for IOWA is really great, too bad I use Camping.” 和 “That upload handler you wrote for Rack works great for me too!”

Rack由Campinghttp://code.whytheluckystiff.net/camping/和ramazehttp://ramaze.rubyforge.org/提供支持
email:chneukirchen@gmail.com
irc:chris2@#ruby-lang on FreeNode
Rack主页http://rack.github.com/
一个教程http://asciicasts.com/episodes/151-rack-middleware
1
0
分享到:
评论

相关推荐

    IBM NetBAY Rack PDU 介绍

    IBM NetBAY Rack PDU是IBM提供的一种数据中心基础设施解决方案,主要功能是管理和分配机架内的电力供应。这种PDU(Power Distribution Unit)分为三种类型,每种都有其特定的应用场景和设计特点,以确保服务器和其他...

    工业 PC SIMATIC Rack PC IL 43[手册].pdf

    本手册详细介绍了SIMATIC Rack PC IL 43工业PC的相关操作与安装指南,适用于2005年9月以后交付的SIMATIC Rack PC IL 43系列产品。手册内容包括了设备的简介、描述、应用规划、安装指南、连接步骤、调试方法以及设备...

    rack 接 收 技 术

    主要介绍rake 接 收 技 术 移动通信

    工业 PC SIMATIC Rack PC 840 V2[手册].pdf

    5. 连接:在连接部分,介绍了如何将I/O模块、设备与电源连接,以及如何进行等电位联结。正确的连接方式是设备能否正常工作的关键。 6. 调试:在设备安装完成之后,需要进行调试,确保设备能够正常启动和运行。调试...

    Dell Systems Rack Installation Guide

    - **Rack Stabilizer Feet**:这部分将详细介绍如何使用机架稳定脚来增强机架的稳定性,确保在安装过程中机架不会倾斜或倒塌。 ### 安装流程概述 虽然文档未提供完整的安装步骤,但基于上述信息可以推测,完整的...

    Metered Rack PDU I 用户指南

    ### Metered Rack PDU I 用户指南...通过以上内容的详细介绍,我们可以清晰地了解到Metered Rack PDU I 的主要功能和使用方法。对于需要在数据中心环境中高效管理电力分配与监控的用户来说,掌握这些知识点至关重要。

    Novation诺维逊 BassStation Rack 用户说明书.pdf

    《诺维逊 BassStation Rack 用户说明书》是一本详细介绍Novation诺维逊BassStation Rack合成器操作和功能的手册。该手册旨在帮助用户理解和掌握这款专业级音乐制作设备的使用方法,充分发挥其在电子音乐创作中的潜力...

    rack-games:在Racket内建的游戏

    ### rack-games库介绍 rack-games库包含了一系列的游戏框架、图形库和实用工具,帮助开发者快速搭建游戏环境。这些框架通常提供了游戏循环、碰撞检测、动画处理等核心功能。例如,你可以找到用于创建像素艺术的绘图...

    Inspur Cloud rack

    Inspur 最新Rack服务器介绍,讲述其设计架构,以及行业分析,对更好的理解服务器有新的帮助

    雷子克-rack R系列风扇及出口过滤器说明书.pdf

    根据提供的文件信息,本文将详细介绍雷子克(广州)电气设备有限公司出品的Rack R系列风扇及出口过滤器的技术参数、安装方式和适用场景等知识点。 1. 技术说明与参数 Rack R系列风扇主要用于工业电气柜的通风散热,...

    rack-mini-profiler:用于开发和生产Ruby机架应用程序的Profiler

    如果您想采取任何一种行动,请提出一个问题,并向我们介绍您的进展。 安装 在Ruby 2.4+中安装/添加到Gemfile gem 'rack-mini-profiler' 注意:确保在Gemfile中的pg和mysql gem之下要求rack_mini_profiler。 如果...

    阿里云 IoT Link Rack 一体机 V1.0.0 物联网平台 开发指南 20200417.pdf

    开发指南详细介绍了如何使用此平台进行设备连接、数据交互以及应用开发。 在法律声明部分,阿里云明确了文档的使用规则和责任限制。首先,用户需通过官方渠道下载并仅用于自身合法合规的业务活动,同时须对文档内容...

    阿里云 IoT Link Rack 一体机 V1.0.0 物联网边缘计算 开发指南 20200417.pdf

    1. **设备接入SDK**:介绍如何将设备连接到IoT Link Rack一体机,可能包括SDK的下载、安装、配置和使用方法,以及支持的各种协议和设备类型。 2. **边缘计算框架**:详述一体机所采用的边缘计算框架,可能包括数据...

    三旺 MODEL277RACK(机架式串口光纤转换器)使用说明书.pdf

    在本文中,我们将深入探讨有关三旺通信公司出品的MODEL277RACK(机架式串口光纤转换器)的使用说明书,以及...通过掌握本文中介绍的知识点,用户可以更加安全、有效地使用该转换器,为通信网络的稳定和可靠提供保障。

    阿里云 IoT Link Rack 一体机 V1.0.0 物联网平台 用户指南 20200417.pdf

    此用户指南详细介绍了V1.0.0版本的平台功能和使用方法,适用于2020年4月17日发布的产品。 1. **设备接入**: - **设备端SDK下载**:为了连接设备到IoT Link Rack平台,用户需要下载相应的设备端软件开发工具包(SDK...

    阿里云 IoT Link Rack 一体机 V1.0.0 IoT安全运营中心 产品简介 20200417.pdf

    产品介绍中虽未详述IoT安全运营中心的具体功能,但可以推测它会涵盖设备身份验证、安全策略管理、威胁检测与防御、安全事件响应和报告等方面。随着物联网设备数量的增长和复杂性的提升,这样的解决方案显得尤为重要...

    阿里云 IoT Link Rack 一体机 V1.0.0 IoT安全运营中心 用户指南 20200417.pdf

    本用户指南详细介绍了如何使用该平台,并提供了相关的法律声明和通用约定。 1. **登录IoT安全运营中心控制台**: 用户需要通过阿里云官方网站或授权通道登录到IoT安全运营中心。在这里,用户可以监控物联网设备的...

    garner:一套实现各种缓存策略的Rack中间件和缓存助手

    如果您不熟悉HTTP缓存,ETag和If-Modified-Since,请观看我们在GoRuCo 2012上介绍Garner在。升级中Garner当前的稳定发行版为0.5.x,其中包含与以前的0.3.x系列相比的许多重大更改。 有关重要更改的摘要,请参见。...

Global site tag (gtag.js) - Google Analytics