ruby开发

使用 Ruby on Rails 快速开发 Web 应用程序 基于 Ruby 的框架用于快速开发,使用的是模型-视图-控制器模式 David Mertz, Ph.D. (mertz@gnosis.cx), 开发人员, Gnosis Software 简介: 虽然还是测试版本,但 Ruby on Rails 已经成为进行 Web 应用程序开发的一个新途径。Rails 的成功之处在于能够自动化大部分常见类型的 Web 应用程序的创建,而且在您希望添加定制或者有特殊要求时,并不会受到限制。不仅如此,同那些只能完成 Web 应用程序单方面需求的自由软件(Free Software)库相比,Rails 包含了非常完整的一套工具。 标记本文! 发布日期: 2005 年 7 月 04 日 级别: 初级 访问情况 4352 次浏览 建议: 0 (添加评论) 平均分 (共 7 个评分 ) . Ruby on Rails 正在令整个 Web 开发领域受到震憾。让我们首先了解底层的技术: •Ruby 是一门免费的、简单的、直观的、可扩展的、可移植的、解释的脚本语言,用于快速而简单的面向对象编程。类似于 Perl,它支持 处理文本文件和执行系统管理任务的很多特性。 •Rails 是用 Ruby 编写的一款完整的、开放源代码的 Web 框架,目的是使用更简单而且更少的代码编写实际使用的应用程序。 作为一个完整的框架,这意味着 Rails 中的所有的层都是为协同工作而构造的,所以您不必自己再重复,可以完全只使用一门单一的语言。 在 Rails 中,所有内容(从模板到控制流再到业务逻辑)都是用 Ruby 编写的。Rails 支持基于配置文件和注释的反射(reflection)和运行时扩展。 本文详细介绍了 Rails 的组成部分,并介绍了它的工作原理。 Rails 介绍 关于 Rails,首先需要理解的是它的模型/视图/控制器(model/view/controller,MVC)架构。虽然这种技术不是 Rails 所特有的 —— 甚至不是 Web 应用程序所特有的(相对于其他程序),但是 Rails 具有非常清晰而专一的 MVC 思维方式。如果您并不使用 MVC 方法,那么 Rails 的用处将大为降低(与遵循其模式的情况相比)。 模型 Rails 应用程序的模型部分主要是它所使用的底层数据库。实际上,在很多情形中 Rails 应用程序正是以一种受管理的方式对关系型数据库管理 系统(RDBMS)中的数据执行操作的一个途径。 ActiveRecord 类是 Rails 的一个核心组成部分,它将关系型表映射为 Ruby 对象,使其成为控制器可以操作并能在视图 中显示的数据。Rails 应用程序特别倾向于使用广为应用的 MySQL 数据库,不过也有与很多其他 RDBMS 的绑定,比如 IBM? DB2?。 如果您愿意,您可以添加 Ruby 代码来在应用程序模型中执行额外的验证,加强数据关联,或者触发其他操作。应用程序的 app/models/ 目录中的 Ruby 文件能够调用 ActiveRecord 的多种验证方法。不过,您也可以将模型代码留作一个存根,而只是依赖保存数据 的 RDBMS 的约束。例如,我在这个示例中所开发的应用程序只包含这个骨架模型代码(至少在开始时是): 清单 1. 骨架模型 app/models/contact.rb class Contact Rails application started on http://0.0.0.0:3000 [2005-03-21 17:57:38] INFO WEBrick 1.3.1 [2005-03-21 17:57:38] INFO ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0] 创建一些内容 要在 WEBrick 端口上看到一个欢迎页面,先前的步骤就足够了。例如,在我的本地系统中,现在可以访问 http://gnosis-powerbook.local:3000/。不过,为了操作定制数据库,需要 生成稍微多一些代码。可以使用脚本 generate 来完成此任务, 这个脚本创建在 AddressBook/ 应用程序目录中: 清单 6. 支架模型和控制器代码的生成 [~/Sites/AddressBook]$ ruby script/generate model contact exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/contact.rb create test/unit/contact_test.rb create test/fixtures/contacts.yml [~/Sites/AddressBook]$ ruby script/generate controller contact exists app/controllers/ exists app/helpers/ create app/views/contact exists test/functional/ create app/controllers/contact_controller.rb create test/functional/contact_controller_test.rb create app/helpers/contact_helper.rb 注意,在相应的表名中,这里应该使用单数的 contact,而不是复数的 contacts。 现在需要编辑一个或多个生成的文件(只需稍加编辑)来让控制器去使用支架: 清单 7. 告知控制器去使用支架 [~/Sites/AddressBook]$ cat app/controllers/contact_controller.rb class ContactController 'list' else render_action 'new' end end 如前所述,控制器的主要任务是将数据导入到变量之中。对象 Contact 是模型所提供的 ActiveRecord对象-关系映射。变量 @contacts 或者 @contact 是它们的适当方法中所给出的数据。 通过 URL 可以访问那些方法本身,比如 http://rails.server/contacts/show/2 (这一个方法显示出 id 为“2”的联系人)。 此示例中的控制器最终连接到了视图,即 RHTML 文件,它们使用的是控制器导入到变量中的数据值。例如,这里是 list视图的一部分: 清单 11. 列出视图 app/views/contacts/list.rhtml [...] 'show', :id => contact.id %> 'edit', :id => contact.id %> 'destroy', :id => contact.id %> [...] 方法 ContactsController.list 导入变量 @contacts,RHTML 中的流控制标签从数组中 取出单个的记录。 -------------------------------------------------------------------------------- 回页首 修改模型 初始的模型只包含联系人的名字。不幸的是,本文中我已经没有余地扩展这个模型以使其包含实际的联系人数据,比如电话号码、地址、电子邮件等等。通常,那些数据 应该存放在一张子表中,子表的外部关键字关联到表 contacts。Rails 模型会使用类似这样的定制代码来指明关联: 清单 12. 定制代码 app\models\phone.rb class Phone Editing contact 'update' %>

Name

Known Since
false %>

'show', :id => @contact.id %> | 'list' %> 那么您手工修改的应用程序看起来如何了呢?与默认的区别不太大,不过在图 3 和 4 中可以看到修改已经生效了: 图 3. 列出联系人,修改后 图 4. 编辑联系人,修改后 -------------------------------------------------------------------------------- 回页首 结束语 Rails 为您提供了开发灵活的 Web 应用程序的一种极其快速的途径;本篇介绍只是肤浅地涉及了如何使用 Rails。完整的框架包含很多实用的类和方法, 能够完成基于 Web 的应用程序使用最多的操作。 Rails 的最大价值在于它孕育了一个成体系的“Rails 思维方式”,因为您所需要的所有支持代码令它变得完整。相对于只是给出要使用的原始材料的 其他工具包和框架而言,这是一个巨大的优势。Rails 开发为您提供了将半成形(half-formed)的想法实现为功能完全的 Web 应用程序的一条坦途。 参考资料 • 您可以参阅本文在 developerWorks 全球站点上的 英文原文。 • “Deploy an application with Cerise Web server” (developerWorks,2005 年 2 月)展示了如何使用 Cerise Web 服务器和 Ruby 创建一个 留言本 Web 应用程序。 • 在 Ruby on Rails 的主页开始使用介绍教程、指南以及下载资源和文档。 • 要获得 Ruby on Rails 所支持的数据库列表(包括 IBM DB2),请访问 Database Drivers page。 • 这个 十分钟的视频 实时地展示了某人开发基于 Ruby 的 Web 应用程序。 • Wikipedia 有一个关于 MVC architectural paradigm 的极好条目。 •在 developerWorks Linux 专区 可以找到更多为 Linux 开发人员准备的参考资料。 •通过参与 developerWorks blogs 加入到 developerWorks 社区。 •在 Developer Bookstore Linux 专栏中定购 打折出售的 Linux 书籍。 • 使用可以直接从 developerWorks 下载的 IBM 试用软件 来改革您的下一个 Linux 开发项目。 关于作者 对 David Mertz 来说,整个世界就是一个舞台;他的职业是致力于提供相关的舞台说明。要深入了解他的生活,请访问他的 个人主页。从 2000 年起他就一直在撰写 developerWorks 专栏 Charming Python 和 XML Matters。阅读他的 Text Processing in Python一书。您可以通过 mertz@gnosis.cx 与 David 联系。 . 建议 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 0 条评论 | 添加评论举报不良信息 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- . -------------------------------------------------------------------------------- . . 快来添加第一条评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值