2005 年 11 月 7 日星期一

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

发布人:David

同志们,我们已经无限接近目标,解脱指日可待。一旦我们解决了这一版本中的那些可恨的 Bug,神话般的 1.0 版本现在注定将成为下一个版本。因此,我们需要所有男男女女和孩子努力工作,对这个最终的候选版本进行彻底的测试。升级您的应用程序,启动新的应用程序,踢轮胎,发动引擎,做完所有工作!

那么新的内容是什么?其中有什么内容让它值得在 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 制定了一份出色的 早期版本升级指南

还有什么新内容?

和往常一样,你可以通过查看变更日志了解所有即兴播报的更改故事。多么精彩的睡前读物。