写点什么

Rails Cells:让 Rails 支持面向组件的开发

  • 2008-05-18
  • 本文字数:1231 字

    阅读完需:约 4 分钟

Rails Cells 的目标是“把面向组建开发的优势带进 Ruby on Rails 网络应用程序平台”。单元(cell)就像是一个轻量级的控制器以及与其相关的可以嵌入网站的视图(类似于 Smalltalk 的网络应用程序框架 Seaside )。

那么 Rails 现在的功能有什么问题呢? Mike Pence 的博客里是这么说的:

很多 Rails 项目通常用 before_filters 和子视图(partials)来填补空缺,但是这种方法本身有些问题。共享的子视图有许多初始化代码,这使 application_helper 变 得肿胀不堪。由于他们能看到所有先前的控制器方法的实例变量——我觉得这是个不幸的设计——它们会非常依赖于最初引发它们的控制器、最初包含它们的视图, 还有它们所依靠的辅助器(helper)。从我的经验来看,很少见到大量的子视图能够容易地共享,而不需要人们通过相当痛苦地调试把它们从自己编织的依赖 网中解救出来。

与控制器和其视图之间的关系不同,控制器的实例变量并不会自动地分享给 cell,而必须要明确地传递。这就使得 Cells 能够独立于某个特定的控制器,从而既可以重用也可用共享了。

我们访问了 Cells 的开发者之一 Nick Sutterer,谈了关于 Cells 项目开发的情况:

我们正在写 Cells 的增强版,可是日常工作还是很忙的(开源开发者的经典理由)。幸运的是,社区上有 人已经提交了一些补丁,并帮助做了些文档——特别是 Mike Pence。在 1.0 发布时,我们希望这个插件是好用、著名的,其 API 应是稳定可靠的,并且将来不应有大的改动。
下一个版本将会完全兼容 Rails 2.0。现在辅助器(helper)还有一些问题。另外一个问题就是 Cells 的引擎(Engines 插件用来增强 Rails 自身的插件框架,使得更容易 在插件中共享控制器、辅助器和模块等)支持。我们其实很喜欢引擎。干得漂亮,James。然而人们好像都害怕它,因此我们只好把它变成用户可选的。我非常 喜欢把 cells 注入引擎的想法,这有助于把我的应用程序在最大程度上实现模块化。与 AJAX 结合时,cells 中的冒名保护(forgery protection)仍有一些问题。由于 cells 非常合适于 AJAX 来使用,我们将十分关注这点,并在下一个版本中解决这个问题。我保证。

我们还有兴趣听听,到目前为止,Cells 在 Rails 社区中被接纳的如何了:

Rails 社区对 cells 非常感兴趣。人们来到我们的聊天室或者使用邮件列表来询问怎样把 cells 集成到他们的项目中。Cells 把面向组件带进了 rails——然而要让开发者都了解到它的能量并且在大项目中使用它还需要一段时间。我的合作开发者 Peter Bex 已经开始使用 cells 了。他把 cells 集成到了一个叫做 formbuilder 的项目中。我现在忙于即将发布的基于 cells 的 Apotomo 插件。它用来把状态(stateful)组件引入 Rails,现在很热门。我敢肯定会有越来越多的好项目使用 cells 的。也许我应该在 cells 主页上开一个“成功故事”博客吧?

要详细了解 Cells,请参看 Cells 网站,或者看一看 Cells 文档

你使用过 Cells 吗?有没有关于 Cells 的成功故事呢?

查看原文: Rails Cells: Component-Oriented Development for Rails

2008-05-18 08:591720
用户头像

发布了 33 篇内容, 共 67903 次阅读, 收获喜欢 0 次。

关注

评论

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

华为云PB级数据库GaussDB(for Redis)揭秘:如何搞定推荐系统存储难题

华为云开发者联盟

数据库 推荐系统 存储 华为云 GaussDB(for Redis)

再启动!零代码第四期训练营报名开放中

明道云

如何设计企业特色的数字化转型架构?

博文视点Broadview

深入分析3种线程池执行任务的逻辑方法

华为云开发者联盟

Java 线程 线程池 ThreadPoolExecutor类

华为云IoT如何连接边缘和云,实现海量IoT数据就地处理的技术实践

华为云开发者联盟

IoT 边缘 IoT边缘 实时数据 IoT Edge

拥抱开源,云智慧发布AIOps社区

BeeWorks

阅读

【LeetCode】 二叉树中和为某一值的路径Java题解

Albert

算法 LeetCode 9月日更

浪潮云说丨上云迁移——快,准,稳!

云计算

聊聊什么样的代码是可读性强的代码?

卢卡多多

代码质量 代码 9月日更

敏捷团队的最佳测试实践:自动化金字塔

禅道项目管理

测试 自动化测试

国产接口管理工具APIPOST中的常见设置项

Proud lion

大前端 后端 Postman 开发工具 接口文档

云小课|细数那些VMware虚拟机的恢复招式

华为云开发者联盟

vmware 云小课 云备份 VMware恢复 恢复数据

国资云横空出世,云上安全监管再加码

行云管家

云计算 数据安全 企业上云 国资云

值钱的数据放在云上安全吗?怎样才能保障其安全性?

行云管家

网络安全 信息安全 数据安全 企业上云

波场链DAPP智能合约系统搭建|波场链DAPP开发

Geek_23f0c3

DAPP智能合约交易系统开发 波场DAPP 波场链DAPP开发

就靠这一篇文章,我就弄懂了 Python Django 的 django-admin 命令行工具集

梦想橡皮擦

9月日更

❤️用武侠小说的形式来阅读LinkedList的源码,绝了!

沉默王二

Java

企业级即时通信市场能否告别“孤岛时代”?

BeeWorks

移动数字化底座 企业即时通讯平台 移动数字化平台 即时通讯IM 移动办公

携手伙伴,共赴星海-百度飞桨应急行业AI私享会成功举办

百度大脑

人工智能 飞桨

netty系列之:搭建自己的下载文件服务器

程序那些事

Java Netty io nio 程序那些事

祝贺 StreamNative 工程师张勇成功跻身 Apache BookKeeper Committer

Apache Pulsar

bookKeeper Apache Pulsar StreamNative

API与ESB 、ServiceMesh、微服务究竟关系如何?

BoCloud博云

云管理

IDC:2021年全球大数据和分析支出预计达2157亿美元

BeeWorks

阅读

电信运营商基于 MQTT 协议构建千万级 IoT 设备管理平台

EMQ映云科技

物联网 IoT mqtt 通信运营商 emq

全球教育行业机构遭受的攻击增长了 29%

BeeWorks

阅读

架构学习模块一

George

如何采购ARM六核RK3399安卓工控开发主板?

双赞工控

安卓主板 工控主板 rk3399主板

柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户

北京好雨科技有限公司

云原生 需求落地 离线部署 可持续交付

第一波场DAPP系统搭建,DAPP介绍

合肥艾数199四②43⑧797

服务器运维是什么意思?日常工作包含哪些?

行云管家

运维 服务器 IT运维 服务器运维

Dogfooding-爱奇艺移动端后台灰度环境优化实践

爱奇艺技术产品团队

测试 开发 灰度发布

Rails Cells:让Rails支持面向组件的开发_Ruby_Mirko Stocker_InfoQ精选文章