Ruby on Rails 2.0的新特性介绍

豆豆网   技术应用频道   2008年01月18日  【字号: 收藏本文

内容摘要:在详细的介绍Rails2.0之前,我要向那些为Rails框架做出过贡献的每一个人致以深深的谢意,不论是像一个家庭那样其乐融融的Rails核心开发团队,还是成千上万的、而且年复一年为Rails提交补丁,积极参与Rails社区人们。Rails2.0也是大规模开源软件开发社区的一个重大胜利,而你完全可以自豪于你在Rails社区当中扮演的角色和做出的贡献。干杯!

  Active Record: Shedding some weight

  为了让ActiveRecord更加简洁和通用,我们把acts_as_list,acts_as_tree等acts_as_xxx功能挪出了Rails,放在了Rails官方的SVN插件里面。如果你需要用到诸如acts_as_list的话,那么你需要安装这个插件,你可以./script/plugin install acts_as_list 来安装,安装好以后,acts_as_list功能又回来了,用法没有任何区别。

  更加激进一点的改动是我们把所有的商业数据库驱动全部挪到了外部的gem包里面。因此Rails2.0仅仅自带MySQL、SQLite和PostgreSQL数据库驱动。这三个数据库是我们更加积极测试和支持的数据库。当然,这并非意味着我们排斥商业数据库,我们只是希望它们能够在Rails发行版本之外保持自己独立的开发和发布计划。对于商业数据库来说,这其实是一件好事情,让厂商可以在基础版本上面添加更多的异常和处理机制,使它们工作的更好。

  所有的商业数据库驱动现在都放在gems包里面,符合如下命名规则:activerecord-XYZ-adapter。所以如果你安装了activerecord-oracle-adapter包,那么这台机器上面所有的各种版本的Rails应用程序都可以访问Oracle数据库了,你却无需修改任何一行应用的代码。

  这种方式对于新的数据库驱动来说在Rails社区也可以更加方便的获得支持。只要你把数据库驱动安装命名规范打包成为gem,用户就可以安装这个gem,立刻在Rails程序当中使用到它们了。

  Active Record: with_scope with a dash of syntactic vinegar

  ActiveRecord::Base.with_scope被劝阻使用以避免用户在controoler,特别是filter里面误用。现在我们鼓励用户仅仅在model里面使用这种格式,这也是当初我们设计这项功能的初衷和保持一个良好实践的需要。当然,这仅仅只是鼓励和劝阻,如果你在衡量得失之后,非要坚持在model之外使用with_scope的话,你尽管可以用这种方式来调用:.send(:with_scope)。

来源:javaeye    作者:robbin    责编:豆豆技术应用

正在加载评论...