同志们,我们离目标如此之近,以至于解脱感触手可及。传说中的1.0版本现在被定为下一个版本,一旦我们能够从当前版本中清除掉那些令人讨厌的bug。所以我们需要每个人,无论男女老少,都全身心地投入到这个最终候选版本的测试中。升级你的应用程序,创建新的应用程序,尽情地测试,尽情地尝试!
那么,有什么新功能?有什么值得你今天就升级而不是等到1.0版本发布呢?很多!在一个正常的宇宙里,这本该被算作0.0.1以上的增量。我们有大量的新内容,特别是针对Active Record和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已经整理了一份从早期版本升级的优秀指南。
还有什么新功能?
一如既往,你可以通过查看变更日志来了解所有变化的详细信息。这些都是非常棒的睡前读物。