跨越边界:对 Rails 进行扩展

 Java™ 编程语言一直以来都是一个很出色的“熔炉”,它具有用于集成的丰富和强大的功能 —— 从用于集成企业库的依赖性注入容器,到 Enterprise JavaBeans (EJB) 技术,再到 Eclipse 的组件模型。通过使用大量这样的理念和架构,Java 开发人员率先采用新的方法将完全不同的软件库和组件组合成一个整体。但是 Java 开发人员并没有对优秀的集成技术造成垄断。本文通过审视一个名为 acts_as_state_machine 的流行插件来了解 Ruby on Rails 插件的工作原理。
在我撰写这篇文章的时候,德克萨斯州和俄克拉荷马州正从一场持久的暴风雪的影响中慢慢缓解过来。司机们又开始出现在马路上,他们不仅仅担心路面上的冰,还害怕其他性急的驾车者。三天的 “冬眠” 之后,我的生活开始慢慢恢复正常。但当从使用 Java 语言转换到使用 Ruby 后,不久,我便体验到了另一种“寒意”。当我使用 Java 项目时,总是可以找到能够解决一些小范围问题的特殊的 Spring 库或 Eclipse 组件。当 Ruby on Rails 刚出现的时候,我经常需要亲自编写它。令人高兴的是,这种“寒意”也开始慢慢消失,这要归功于一种有效的插件架构,很多人使用它来对 Rails 进行扩展。

如果您曾经花了些时间研究过 Rails,那么一定会注意到 ActiveRecord 中的 acts_as 命令。尽管 ActiveRecord 与处理持久性有关,您总是希望将行为添加到类中,而不仅仅进行数据库存储和检索。比方说,通过使用 acts_as_tree,可以将类似树的行为添加到具有 parent_id 属性的类中。通过使用 ActiveRecord 模型中的 acts_as_tree,可以动态地添加方法来管理树,比如检索父记录或子记录的方法。在过去一个月里,我可以找到能够解决投票、版本化、Ajax、复合键以及不受基本 Rails 支持的所有特性的插件。

Rails 中的扩展模型是使用 Ruby 语言构建在特性之上的,与使用 Java 语言构建的模型完全不同。在本文中,我将剖析 acts_as 插件,您可以了解扩展模型的内部。我没有构建端对端场景,而是提供了部分产品示例以涵盖更多方面,并使您认识真实的插件以及如何在真正的生产代码中使用它们。

。。。。。。

                                                                                                                               点击此处查看全文

你可能感兴趣的:(java,eclipse,Ruby,ActiveRecord,Rails,javabeans)