跨越边界: Streamlined,第 1 部分 用 Ajax、元编程和 Ruby on Rails 框架进行企业级搭建 Ruby on Rails 是一种基于 Ruby 编程语言的高效的 Web 开发环境。Streamlined 是基于 Ruby on Rails 的一个快速发展的开放源码框架。Streamlined 综合了 Ajax、元编程、代码生 成以及 Ruby on Rails 的强大功能,把 Rails 的生产力带到了一个新层次。 我生平首次参加马拉松培训。 马拉松培训最有趣的方面——实际上, 也是惟一的方面——就 是提高不断叠加所带来的影响。 有时, 我为了提高效率而进行专门为了改进身体条件而
设计 的长短跑。有时,在跑步过程中,我
学习避免小的错误,避免重复多余的姿势(多余的姿势 对单个步幅没有太大影响,但却会在整个 26.2 英里的跑步过程中浪费能量或伤害到我) 。 我每周都有提高,可每周之间的区别并不显著。但是一个训练计划周期过后,我会从最初只 能跑 4 英里提高到能跑 26.2 英里。
软件开发也与此类似。如果持续进行小的改进,消除 多余的重复,您就会不断地累积提高,从而在今后的每个项目中都会做得更好。 在这篇包含两部分的文章中,我把重点放在 Ruby on Rails 搭建上,这是一个能够在早期开 发 阶 段 削 减 重 复 的 Rails 特 性 。 第 1 部 分 介 绍 Rails 搭 建 的 限 制 和 Streamlined , Streamlined 是个代码生成器,它高效地应用了元编程技术来消除更高层次上的重复。第 2 部分将进一步深入 Streamlined 的元编程模型及其定制特性。 低级重复与高级重复 在整个 跨越边界 系列中,我介绍了通过降低重复和提高效率实现反复改进的语言和框架: 具备诸如 duck typing 这类特性的编程语言,通过使用更少的类型定义、减少纯粹为了支持 编译器所需要的代码数,能够提高灵活性和减少重复。 框架试图通过处理核心任务(例如持久性或事务)来提高效率和消除重复,这样就不必为每 个新的应用程序编写代码。 Ruby on Rails 通过利用公共规范消除重复配置,允许框架推断您的意图,而不是强迫您配置 应用程序特性(例如应用程序中特定的数据库表名称和列名称) 。 就像所有高效的语言和框架必须做的那样, 这些措施都把重点放在每个步骤上, 或低级重复 上。但是一旦搭建了一个有效的基础,就可以把目标放得更高。Rails 的搭建特性试图通过 公共应用程序类型(数据库支持的 Web 应用程序)消除重复。 削减赘负 Rails 所做的削减数量惊人。重复配置、代码中重新阐述的规范,以及其他框架中的无效理 念,在这个框架中都消失了。但是仍然存在大量的重复。对于所有的框架来说都是如此。请 记住,日本汽车制造商不是靠造一辆车就威胁了
奔驰和宝马公司的,而是通过不懈的改进。 如果您为了搭建传统 Web 应用程序而在框架中寻找改进, 那么仍然会找到大量可以削减的 内容。
多数数据库支持的 Web 应用程序,几乎要为
系统中每个主要的表都提供执行 CRUD 操作 (创建、读取、更新和删除)的用户界面。 搭建这些用户界面应当自动进行,而不应当重 复。 Rails 通过 搭建开始消除这种重复,搭建是一个特性,可以根据数据库表集合的内容 构建默认的 CRUD 界面。使用 Rails,只用几个简单步骤,就可以从头开始构建一个搭建完 整的应用程序。如果一直跟随 跨越边界 系列,那么以前就看过这些步骤。这次,我再把这 些步骤简要介绍一下: 输入 rails trails 生成编排山地摩托车赛道的 Rails 应用程序。 用 选 中 的 数 据 库 引 擎 创 建 叫 作 trails_development 的 数 据 库 , 并 修 改 trails/config/database.yml,以反映选中的配置。 切换到 trails 目录, ,生成模型和控制器:输入 ruby script/generate model Trail (如果在 UNIX 上运行, 可以省略 ruby) 生成叫作 Trail 的模型, 输入 script/generate controller Trails 生成叫作 TrailsController 的控制器。 把文件 db/migrate/001