2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

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:591434
用户头像

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

关注

评论

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

Tapdata 实时数据融合平台解决方案(五):落地

tapdata

大数据

基于 BDD 理论的 Nebula 集成测试框架重构(上篇)

NebulaGraph

k8s 插件管理工具之krew使用

雪雷

6月日更

Spring Boot FatJar类加载机制简要分析

luojiahu

Spring Boot 类加载 ClassLoader FatJar

手把手教你在IDEA中配置Maven

打工人!

Java maven 6月日更

6月2日,讲一个鸿蒙的故事

这不科技

华为 鸿蒙

源码解读-别再说你不知道HashMap原理!面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能

阿里巴巴云原生

容器 运维 云原生 k8s

《堂食点餐》APP前后端全部免费开源啦!

YonBuilder低代码开发平台

源码 大前端 APP开发 APICloud 外卖app

架构实战营模块5作业

eoeoeo

架构实战营

持续测试 | 让测试更自由:在 CODING 中实践自动化执行用例

CODING DevOps

DevOps 自动化测试 持续测试

你真的了解 “开源” 么?请查收【保姆级】开源百科

程序员鱼皮

Java c++ Python GitHub 开源

5分钟速读之Rust权威指南(十五)

wzx

rust

Tapdata 实时数据融合平台解决方案(三):数据中台的技术需求

tapdata

oracle mongodb

智能炒币机器人系统开发案例解析,智能炒币机器人源码设计

系统开发咨询1357O98O718

🔎【Java 源码探索】深入浅出的分析HashMap(JDK7)

码界西柚

Java hashmap 6月日更 JDK7

🏆大势所趋,迈向认识WebRTC的第一步,加油!

码界西柚

WebRTC RTC RTC征文大赛 6月日更

【Vue2.x 源码学习】第二篇 - Vue的初始化流程

Brave

源码 vue2 6月日更

分治(详解残缺棋盘 —— Java代码实现)

若尘

算法 分治 java代码 6月日更

webRTC实现音视频通话与屏幕共享

侠客行

WebRTC 屏幕共享 iOS屏幕共享 web屏幕共享

【Apache BookKeeper】 概念与架构

awen

Apache 分布式存储 bookKeeper

HarmonyOS 2正式发布 硬件生态品牌HarmonyOS Connect一同亮相

科技汇

Tapdata 实时数据融合平台解决方案(四):技术选型

tapdata

大数据

面试系列-2 redis列表场景分析实践

李阿柯

php 面试 redis cluster

情指勤一体化指挥调度平台搭建,情报研判分析系统搭建

你们公司的数据库出过问题么?

escray

学习 极客时间 朱赟的技术管理课 6月日更

渣本毕业两年经验,精心整理

欢喜学安卓

android 程序员 面试 移动开发

Qcon大会百度智能云出招,AI-Native云计算架服务企业融合创新

百度大脑

人工智能 云计算 Qcon

我对技术潮流的一点看法

Phoenix

​探讨AI+新模式,百度大脑提供纺织企业数字化转型新路径

百度大脑

AI 纺织企业

BZZ节点挖矿系统搭建,BZZ矿机分币系统

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