2005年11月7日,星期一

Rails 1.0 RC4 (0.14.3): 这是最后的倒计时!

作者:David

同志们,我们离目标如此之近,以至于解脱感触手可及。传说中的1.0版本现在被定为下一个版本,一旦我们能够从当前版本中清除掉那些令人讨厌的bug。所以我们需要每个人,无论男女老少,都全身心地投入到这个最终候选版本的测试中。升级你的应用程序,创建新的应用程序,尽情地测试,尽情地尝试!

那么,有什么新功能?有什么值得你今天就升级而不是等到1.0版本发布呢?很多!在一个正常的宇宙里,这本该被算作0.0.1以上的增量。我们有大量的新内容,特别是针对Active Record和Rails的基础设施。

新命令

  • script/server:如果系统同时安装了lighttpd和FCGI,现在将使用它们。这使得开发体验比WEBrick快很多,但遗憾的是,这只适用于OS X/nix系统。Windows用户将继续使用WEBrick启动服务器。
  • script/plugin:这是你通往精彩插件世界的门户。它可以帮助你安装、管理和发现新插件。更多信息请参阅script/plugin —help。
  • script/about:显示Rails及其关联组件的所有版本信息。请参阅示例

Active Record:find_or_create_by_X,关联集合扩展,所有数据库的迁移

我们添加了一个新的动态查找器,它允许你根据传入的属性来查找或创建一个新记录,例如调用Tag.find_or_create_by_name("Summer")。它甚至适用于关联,所以page.tags.find_or_create_by_name("Summer")也是合法的。

关联集合的扩展是一种新的、非常棒的方式,可以在所有通过代理访问的方法上添加方法。例如:


class Account < ActiveRecord::Base
  has_many :people do
    def find_or_create_by_name(name)
      first_name, *last_name = name.split
      last_name = last_name.join " "
 
      find_or_create_by_first_name_and_last_name(first_name, last_name)
    end
  end
end
 
person = Account.find(:first).people.find_or_create_by_name("David Heinemeier Hansson")
person.first_name # => "David"
person.last_name  # => "Heinemeier Hansson"

最后,我们通过为所有商业数据库适配器添加迁移支持,对数据库适配器进行了大量的打磨和优化。特别是对SQL Server适配器进行了全面的优化。

Action Pack:改进的过滤器控制,修复了ActiveRecordStore,以及redirect_to :back

Action Controller现在提供了skip_before_filter和skip_after_filter,以绕过在超类中设置但当前控制器不适用的特定过滤器。例如,在ApplicationController中指定:authenticate,但在SignupController中跳过它。

ActiveRecordStore不再只在发生更改时保存,因此你可以再次依赖updated_at在每次页面查看时递增,从而依赖它进行垃圾回收。

最后,我们现在有了一个简单的方法来表示“返回你来时的位置”,使用redirect_to :back。

从0.14.x升级

如果你正在使用0.14.x系列,升级到最新版本从未如此简单。你几乎可以免费获得所有新功能,只需安装最新的gem,其余的通过运行这两个命令即可完成:


rake update_javascripts
rake add_new_scripts

我把它们的作用留给你自己去探索。

从0.13.x(或更早版本)升级

Jeremy Kemper已经整理了一份从早期版本升级的优秀指南

还有什么新功能?

一如既往,你可以通过查看变更日志来了解所有变化的详细信息。这些都是非常棒的睡前读物。