速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Ruby on Rails 正式引入 Metal

  • 2008-12-25
  • 本文字数:1797 字

    阅读完需:约 6 分钟

Ruby on Rails 团队正忙于采用 Rack 将 Rails 推升至新的高度。Rack 的实现方式使得开发者可以在自己的应用中使用许多现成的中间件,而这种特性使得 Rails 团队开发 Metal 成为可能。Metal 是通用 Rack 中间件的包装,放置在 Rails 请求之前,并且可以访问 Rails 的会话。对于那些要求运行速度非常快,需要每秒处理成百上千个请求的应用来说,Metal 简直就是量身定做的一般。

David Heinemeier Hansson Ruby on Rails 的官方博客上正式宣布引入 Rails Metal ,并举例说明了其适用范围:

目前为止我们已经实现了一个轻量级的包装器,它封装了通用 Rack 中间件,并命名为"Metal"。 Rails Metal 对类似与 Campfire 投票服务的应用非常有用,Campfire 每秒需要处理成百上千的请求,速度要求非常快,同时其逻辑又很简单(2 个数据库调用然后返回一个字符串)。目前这个服务是用 C 编写的,不过我们将会看到,它很快将会被 Rails Metal 所取代。

Jesse Newland 也发表了一篇名为 Rails Metal:借 Rails 之力的微框架的博文,其中写到:

最近我们用 Rack 取代了 Rails 原有的请求处理代码,并且集成了中间件的支持,Rails Metal 是一项睿智的改进,它允许 Rails 应用使用 Rack 中间件来创建一个超级快的 action。

Jesse 提供了 Rails Metal 的“hello word”的例子,并与普通的 Rails 控制器做了比较:

复制代码
class Poller < Rails::Rack::Metal
def call(env)
if env["PATH_INFO"] =~ /^\/poller/
[[200], {"Content-Type" => "text/html"}, "Hello, World!"]
else
[[404], {"Content-Type" => "text/html"}, "Not Found"]
end
end
end

普通的 Rails 控制器:

复制代码
class OldPollerController < ApplicationController
def poller
render :text => "Hello World!"
end
end

这两段代码迥异,在一个简单的基准测试上的结果是:Metal 比老版本的 controller 快 25 倍。

InfoQ 采访了 Rails 核心团队成员、Rails Metal 的开发者 Joshua Peek ,了解到了一些这个前景一片光明的新兴技术的细节。

当被问道 Rails Metal 是什么时,Joshua 回答说:

Rails Metal 应用是一种面向特定类型的应用,小而且快。它们可以和 Rails 应用在相同的进程里运行,这意味着它应该很容易开发,或者你也可以单独部署。

哪些类型的问题适合使用 Rail Metal 来解决?

Metal 适用于构建需要每秒处理成百上千请求的微型服务。

Rails Metal 是一种新技术,并不是人人都适用,那么 Metal 对于一般的 Rails 开发者来说有什么价值呢?

虽然对于任何一个 Rails 开发者来说,建立 metal 应用都是件非常容易的事,但是它确实是一件利器。Rails 开发者还是应该继续按照原来的方式使用 Rails,当他们确认某个特定的 action 有特别高的性能要求时,Metal 就能派上用场了。

Metal 似乎是用到了最新的 Rack 实现最本质的功能,但是实际上,Rails 引入 Metal 的目的却并不在此,就此 Josh 解释说:

Rails 提供了一个全栈的 MVC 框架,包罗万象,你可以用来构建一个真正的应用。然而,Rails 也允许你使用“metal”来实现最快的速度。无论是两者中的哪一个,我们都希望给开发者提供最好的支持。

有意思的是,人们在看到 Merb-Core 时,可能会拿它和 Metal 做比较,而事实上两者迥然不同。

Merb 是一个完整的 MVC 框架。然而,Metal 就不是那么有血有肉了。它简化了 Rack API,你得到的是一个原始的请求环境散列,你需要返回一个状态码,应答包头和一个应答包体。在 Metal 里面没有控制器或者视图的概念,开发者可以用最少的代码来实现想要的功能。

我们已经听过很多微框架及其适用范围了。Jesse Newland 把 Metal 和其他的“微框架”相提并论。我们询问了 Joshua,Metal 是否会造成其他的微框架的需求降低:

不会的。对于像 Sinatra 这类微框架来说,还有一定的空间,把它做得足够简单,来编写简单的 API 处理程序。事实上,你可以把 Sinatra 当成一个 metal 应用来使用。因为 Sinatra 构建于 Rack 之上,所以会工作的很好。

最后,开发者如何才能获取到 Metal?

现在 Edge Rails 已经引入了 Metal。或者你也可以等 Rails 的下一个 gem 发布,应该是 2.3 版。

Rails Metal 的发布已经引起了广泛的关注,它给需要速度的 Rails 应用带来了好消息。更多关于 Rails Metal 的信息,请访问 Ruby on Rails 官方博客以及 GitHub 代码库,你可以从 Github 库中获取 Rails。

查看英文原文: Ruby on Rails gets down to the Metal

2008-12-25 11:08956
用户头像

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

关注

评论

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

办公必备软件 PDF Reader Pro for mac 全能pdf编辑

Rose

PDF Reader Pro破解 PDF编辑软件 PDF Reader Pro

强化远程管理安全:SecureCRT——您的首选SSH客户端与终端仿真器

Rose

SecureCRT Mac破解版 终端仿真软件

Winclone Pro——专业级Windows虚拟机克隆与恢复工具

Rose

Winclone Pro Windows系统备份

实训机房用什么样的云桌面系统合适?

上海锐起科技

引领未来商业潮流:AI赋能商品管理软件的革新应用与趋势

第七在线

「模型量化技术」可视化指南:A Visual Guide to Quantization

Baihai IDP

AI 模型量化 白海科技 LLMs 企业号 8 月 PK 榜

观测云产品更新 | 异常追踪、数据保存策略、BPF 日志、管理优化等

观测云

产品迭代

解锁未来财富密码:AI 自动化副业创收班 - 终身财富加速器

测试人

软件测试

PYUSD跃升为第六大稳定币:借势Solana和高APY的成功之道

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 NFT开发 公链开发

Microsoft 365 有什么用?microsoft 365永久激活密钥

Rose

Project Office Pro:一站式项目管理解决方案,让工作更高效!

Rose

豆包大模型综合能力提升20.3%,火山引擎成立零售大模型生态联盟,加速企业AI落地

新消费日报

流程挖掘,为光伏企业重塑确定的竞争力

望繁信科技

数字化转型 流程挖掘 流程智能 光伏企业

秒验集成指南

MobTech袤博科技

开发者

秒验SDK扩展业务功能设置

MobTech袤博科技

开发者

巧用PDF转Markdown插件,在扣子(Coze)手搓一个有趣好玩的AI Bot

合合技术团队

人工智能 PDF 科技

Photoshop 2024最新版详细安装教程 附mac版和win版安装包

Rose

量化现货合约跟单交易所系统开发成熟技术/步骤教程/策略指南

V\TG【ch3nguang】

主要根据什么因素选择云堡垒机规格?

行云管家

云计算 数据安全 云堡垒机 云数据

Auto Mouse Click 直装版 Mac高效稳定的鼠标连点器

Rose

如何快速做一个优美的网站?

coxi_vv

开源 建站 网页 halo博客 1Panel

5个Spring 异步与事件注解:解耦与高性能注解应用案例(必须收藏)

肖哥弹架构

spring Spring Boot 异步 事件

Acrobat pro Dc 2023中文直装安装包 附Mac版和win版激活补丁

Rose

NTFS 磁盘管理器NTFS Disk by Omi NTFS 安装简单 完美支m1/m2

Rose

Omi NTFS磁盘管理助手 NTFS Disk by Omi NTFS NTFS 磁盘管理器 Omi NTFS

秒验合规指南

MobTech袤博科技

开发者

抖音集团 FlinkSQL 性能优化探索及实践

字节跳动数据平台

flink 云服务 火山引擎 流式计算

从海量信息中脱颖而出:Workflow智能分析解决方案,大语言模型为AI科技文章打造精准摘要评分体系(总篇章)

汀丶人工智能

人工智能 智能问答

MIAOYUN与CStack签署总代协议,共拓一体化云端交互管理市场!

MIAOYUN

云计算 云原生 云服务 云桌面 战略合作

人工智能时代:哪些职业将被取代,哪些职业难以替代?

天津汇柏科技有限公司

人工智能

基于Java的XML编辑器 Oxygen XML Editor for Mac

Rose

Oxygen XML Editor XML开发

DOGS空投掀起交易所竞争热潮,TON生态能否再次引爆市场?

区块链软件开发推广运营

区块链开发 链游开发 NFT开发 公链开发 dapp项目开发

Ruby on Rails正式引入Metal_Ruby_Robert Bazinet_InfoQ精选文章