频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

Ruby on Rails 2.0正式发布(1)

作者: Robert Bazinet/高昂 编译 出处:InfoQ中文站 2007-12-12 11:23    砖    好    评论   进入论坛
阅读提示:12月7日,David Heinemeier Hansson(DHH)在Ruby on Rails的官方blog上宣布,经历了将近一年的开发之后,Ruby on Rails 2.0目前已经正式发布。本文列举了Rails开发者最为关注的改进。

12月7日,David Heinemeier Hansson(DHH)在Ruby on Rails的官方blog上宣布,经历了将近一年的开发之后,Ruby on Rails 2.0目前已经正式发布

2.0版本的Rails具备众多新的特性,并且在代码上做出了大量的修补和完善。就新版的发布,David这样写道:

Rails 2.0是Rails框架发展历史上的一个里程碑。我投入在Rails框架开发方面的工作已经有四年半的时间,并且Rails目前的开发参与者也越来越多。对这几年我们所做出的努力和坚持的信念,我感到非常的满意。并且我们坚持一贯的理念,同时不断推动Rails的发展。

发布说明中,描述最新特性的列表有很多内容。令Rails开发者最为关注的改进包括有:

◆Action Pack: Resources
在Controller之中充斥着大量action方法的情况已经不存在了,我们对RESTful方式的实现进行了大量的改进和提高。首先,我们不再使用分号来分隔自定义方法,而是采用斜线,例如原先是/people/1;edit的URL,现在改成了 /people/1/edit。另外我们还对URL路由资源添加了命名空间的支持,因此像后台管理的接口可以非常简单的定义如下:

map.namespace(:admin) do |admin|
admin.resources :products,
:collection => { :inventory => :get },
:member => { :duplicate => :post },
:has_many => [ :tags, :images, :variants ]
end

这种方式可以使开发者按照inventory_admin_products_url和 admin_product_tags_url的方式来定义命名路由。为了方便记录所有路由规则,我们添加了一个叫做“rake routes”的rake任务,可以帮助开发者列举出routes.rb定义的所有命名路由规则。

此外,我们还引入了一个新的约定,即所有基于资源的controller的默认形式都是复数形式。这样即便单个资源在不同路由规则中被多次引用,仍然可以指向同一个controller来处理,例如:

  # /avatars/45 => AvatarsController#show
map.resources :avatars
# /people/5/avatar => AvatarsController#show
map.resources :people, :has_one => :avatar

◆Action Pack: Multiview

Action Pack中与资源映射一起增强功能的还有MultiView。我们已经有了respond_to方法,但我们可以更进一步,把MultiView控制延伸到模板里面去。我们可以根据模板文件的后缀格式来决定使用什么render呈现机制。因此,show.rhtml可以写成show.rhtml.erb,这就表明是show这个action的一个默认rhtml模板,和之前在Action里面使用respond_to声明的format.html是一个意思。此外还可以使用诸如show.csv.erb的形式,表明显示为csv格式的数据,并且使用默认的ERB去render呈现。

所以,新的模板格式是: action.format.renderer。下面有几个例子:

◆show.erb: 对于所有格式,都使用默认的erb显示show模板
◆index.atom.builder: 用Builder库来呈现XML文件,之前被称作rxml,输出的文件类型为RSS的AOTM类型
◆edit.iphone.haml: 使用自定义的HAML模板引擎机制(默认情况下并没有包含)来render输出模板内容到iPhone手机之上

说到iPhone手机,我们可以自定义一个专用类型来实现内部路由。当你需要类似iPhone这样的特殊HTML接口的时候,我们所要这去实现。

◆Action Pack: Record identification
为了驱使开发者使用基于资源的映射,我们对资源映射的controller和view的URL处理进行了大量的简化。我们添加了大量命名约定,可以直接把model对象转化为资源映射的路由,例如:

  # person is a Person object, which by convention will
# be mapped to person_url for lookup
redirect_to(person)
link_to(person.name, person)
form_for(person)

◆Action Pack: 贴近HTTP方式
正如开发者期望的那样,Rails 2.0的Action Pack更加贴近HTTP并且充分利用了HTTP协议,例如资源、多种视图,以及其他更多的内容。我们添加了一个模块来处理HTTP的基本验证,可以使得授权的API轻松跨越SSL协议,而且非常简单易用。下面是一个例子(更多的例子请参考ActionController:: HttpAuthentication):

  class PostsController < ApplicationController
USER_NAME, PASSWORD = "dhh", "secret"
before_filter :authenticate, :except => [ :index ]
def index
render :text => "Everyone can see me!"
end
def edit
render :text => "I'm only accessible if you know the password"
end
private
def authenticate
authenticate_or_request_with_http_basic do |user_name, password|
user_name == USER_NAME && password == PASSWORD
end
end
end
 
此外,我们在把JavaScript和CSS文件组织到一个逻辑单元之上这个方面做了很多工作,不需要让浏览器发起多次HTTP请求,分别获取每个JavaScript和CSS文件,以便减少HTTP请求次数。使用javascript_include_tag(:all, :cache => true) 这个helper在production模式下把public/javascripts/目录中所有js文件打包到单个public/javascripts/all.js文件里面,但在开发环境下,仍然保持每个文件独立的修改,这样便可以反复迭代而不必清理缓存。

我们还添加了一些选项让,仅用几行代码就能够让浏览器去访问多台服务器上面的资源。如果你添加如下设置:ActionController:: Base.asset_host = “assets%d.example.com”,那么Rails框架就会自动的把静态资源的请求分发到多台物理服务器上面去,例如分发到 assets1.example.com到 assets4.example.com等等之上。这样浏览器可以同时向多台服务器获取资源,增加你的应用的访问速度。

◆Action Pack: 安全性
能够快捷的创建出安全应用总是一件令人愉快的事情,而Rails2.0提供了大量先进功能来实现这一目标。重要的是,Rails现在提供了一种内建的机制来处理CRSF攻击。我们在所有的HTML表单和AJAX请求中包含了一个特殊的token,当请求来自于其他应用的时候,就可以及时检测到。所有这些安全选项,在新创建的Rails 2.0项目当中默认就是开启的状态,对于升级到Rails 2.0的应用,要打开这一个选项也很容易,可以使用ActionController::Base.protect_from_forgery来开启选项(详细的说明请参照:ActionController::RequestForgeryProtection)。


共3页: 1 [2] [3] 下一页
【内容导航】
专题
英特尔45纳米Penryn处理器发布
甲骨文Oracle 11g正式发布
初探敏捷开发
WCF开发基础
体验Visual Studio 2008的魅力
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看81024次)
·UML类图详解 (查看72498次)
·C++是垃圾语言?! (查看42631次)
·C#技术开发指南 (查看40232次)
·UML统一建模语言 (查看39205次)
·Java编程开发手册 (1198个砖)
·Java基础教程 (431个砖)
·C#技术开发指南 (311个砖)
·.NET开发手册 (254个砖)
·PB开发教程 (223个砖)
·Java编程开发手册 (658个好)
·Java基础教程 (578个好)
·.NET开发手册 (282个好)
·PB开发教程 (213个好)
·Delphi开发技术手册 (200个好)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。